sqlserver MSDTC的设置要点

 更新时间:2016年11月25日 16:45  点击:2215
1.启动2台sql server服务器的MSDTC服务,做cluster的话,必须为每个节点运行comclust.exe
2.2台sqlserver都要设置好对方的linkserver,
3.如果2台sql server服务器不属于同一个网段,则需要双方配置host,保证ping机器名可以ping通对方
4.可以使用DTCping工具测试一下
5.这样,就sql server可以进行分部式查询和事务操作了。

查看JOB的错误日志
查看数据库维护计划的历史纪录,找出错误的信息
用sql事件跟踪器
使用一下sql语句做进一步检查
dbcc dbreindex(N'[dbo].[tblSiteWantProd]', N'', 90, sorted_data_reorg)
DBCC CHECKIDENT ('tblSiteWantProd')
DBCC CHECKDB
dbcc checktable
sql 错误信息
CREATE UNIQUE INDEX 终止,因为发现了索引 ID %1! 的重复键。最重要的主键为 ''%2!''。
%1=可能是表示当前表的第几个索引???
%2=重复键的值


作者: Eygle 出处: BLOG
  进制转换是开发中经常需要用到的,本文简单介绍几种常用的进制转化方法.
  一 16进制转换为10进制
  可以通过to_number函数实现
SQL> select to_number(’19f’,’xxx’) from dual;
TO_NUMBER(’19F’,’XXX’)
----------------------
415
SQL> select to_number(’f’,’xx’) from dual;
TO_NUMBER(’F’,’XX’)
-------------------
15
  二 10进制转换为16进制
  可以通过to_char函数转换
SQL> select to_char(123,’xxx’) from dual;
TO_C
----
7b
SQL> select to_char(4567,’xxxx’) from dual;
TO_CH
-----
11d7
  三 2进制转换为10进制
  从Oracle9i开始,提供函数bin_to_num进行2进制到10进制的转换
SQL> select bin_to_num(1,1,0,1) a,bin_to_num(1,0) b from dual;
A B
----- ----------
13 2
SQL> select bin_to_num(1,1,1,0,1) from dual;
BIN_TO_NUM(1,1,1,0,1)
---------------------
29
  四 通过自定义函数实现进制转换
  以下函数来自AskTom网站,是Tom给出的例子,供参考:
create or replace function to_base( p_dec in number, p_base in number )
return varchar2
is
l_str varchar2(255) default NULL;
l_num number default p_dec;
l_hex varchar2(16) default ’0123456789ABCDEF’;
begin
if ( trunc(p_dec) <> p_dec OR p_dec < 0 ) then
raise PROGRAM_ERROR;
end if;
loop
l_str := substr( l_hex, mod(l_num,p_base) 1, 1 ) || l_str;
l_num := trunc( l_num/p_base );
exit when ( l_num = 0 );
end loop;
return l_str;
end to_base;
/
create or replace function to_dec
( p_str in varchar2,
p_from_base in number default 16 ) return number
is
l_num number default 0;
l_hex varchar2(16) default ’0123456789ABCDEF’;
begin
for i in 1 .. length(p_str) loop
l_num := l_num * p_from_base instr(l_hex,upper(substr(p_str,i,1)))-1;
killergo的专栏
最近因为稍微有点空闲时间,所以想了下在sql server平台用存储过程的分页方式,现在列示在下面。
实际测试时,在15000条数据情况下两者性能大体相当,在20000-30000条数据的情况下前者明显比后者性能更佳。更大数据量没有进行测试了。
注意,数据表里面是否有 键和索引 对性能的影响相当大
-----------------------------------------------------
第一种:
/*第一个参数是每页条数,第二个参数是目标页码*/
CREATE proc sp_fixpage @pagesize int,@destpage int as
set nocount on
declare @id int
declare @startid int
select @startid = (@destpage - 1)*@pagesize
set rowcount @startid
select @id = id from t_member
set rowcount @pagesize
set nocount off
select * from t_member where id > @id order by id
GO
第二种:
CREATE PROCEDURE sp_fixpage1 @pagesize int ,@destpage int
as
set nocount on

CREATE TABLE #myTable(
[ID] [int] NOT NULL ,
[UserName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Origin] [int] NULL ,
[LatencyBuyDegree] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[UserType] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[Email] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[UserLev] [int] NULL ,
[RegTime] [datetime] NULL ,
[RegMode] [bit] NULL ,
[PaperNum] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[UserClass] [bit] NULL ,
[password] [binary] (64) NULL ,
[Tel] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[drass] [varchar] (150) COLLATE Chinese_PRC_CI_AS NULL ,
[Zip] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[PaperNumlb] [int] NULL ,
[OpUser] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Province] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[BirthDate] [datetime] NULL
) ON [PRIMARY]
declare @tempPos int
declare @absPos int
declare @nowID int
出处:∮明天去要饭's Blog
前段时间在测试100万条以上数据时的分页速度,需要往数据库中插入100万条记录,那个时候插入记录我是用C#写的,后来发现,其实用SQL自已也可以实现的,而且更简单哦!以下是我写的一个实例,很简单,大家应该能看懂的.
declare @i int --变义变量@i
set @i = 1 --初始化@i为1
while @i < 100 --如果@i小于100,这里改成100万即是插入100万条记录
begin ------------------
insert into manager (username,userpwd) values('kgdiwss','250')
set @i = @i 1
end --------------------
怎么样,很简单吧,其实SQL的功能也很强大的,好多东西它本身都可以完成.以前好多东西我是放在程序里判断的,现在我都习惯放在SQL里了,因为可以方便的修改.


[!--infotagslink--]

相关文章