欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

SqlServer 2000 开发问题

程序员文章站 2022-05-13 12:37:41
...

1.NULL永不=NULL .如何设置让 NULL=NULL呢? declare @tab table (id int ) insert into @tab select 1 select * from @tab where null = null 问题解决: 比较前用 set ANSI_NULLS off ,别忘了比较完后再设置为原来的默认值.:) set ANSI_NULLS on 2.分布式事

1.NULL永不=NULL .如何设置让 NULL=NULL呢?

SqlServer 2000 开发问题declare @tab table (id int )
SqlServer 2000 开发问题
insert into @tab select 1
SqlServer 2000 开发问题
SqlServer 2000 开发问题
select * from @tab where null = null


问题解决: 比较前用 set ANSI_NULLS off ,别忘了比较完后再设置为原来的默认值.:) set ANSI_NULLS on
2.分布式事务总是出错.
现象:

SqlServer 2000 开发问题begin tran
SqlServer 2000 开发问题
select * from [192.168.1.100].aigdollar.dbo.shoporderinfo
SqlServer 2000 开发问题
commit

该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]

问题解决:
打开MSDTC的安全配置,选中:
网络DTC访问.
允许入站.
允许出站.
不要求进行验证.
启用事务 Ineternet 事务 (TIP事务).
启用 XA 事务.
DTC登录帐户: NT Authority\NetworkService
防火墙打开 135 端口( RPC ),允许 MSDTC ( 或打开1885 端口).
OK!
微软资料: http://support.microsoft.com/kb/Q899191

3.如何在SQL-Server的系统表中找出主键而非索引?
下列代码只能找出索引:

SqlServer 2000 开发问题CREATE TABLE [abc] (
SqlServer 2000 开发问题
[id] [int] NOT NULL ,
SqlServer 2000 开发问题
[con] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
SqlServer 2000 开发问题
CONSTRAINT [PK_abc] PRIMARY KEY NONCLUSTERED
SqlServer 2000 开发问题 (
SqlServer 2000 开发问题
[id]
SqlServer 2000 开发问题 )
ON [PRIMARY]
SqlServer 2000 开发问题)
ON [PRIMARY]
SqlServer 2000 开发问题
GO
SqlServer 2000 开发问题
SqlServer 2000 开发问题
CREATE UNIQUE CLUSTERED INDEX [ic] ON [dbo].[abc]([con]) ON [PRIMARY]
SqlServer 2000 开发问题
GO
SqlServer 2000 开发问题
SqlServer 2000 开发问题
select object_name(id),*
SqlServer 2000 开发问题
from dbo.sysindexkeys
SqlServer 2000 开发问题
where object_name(id)='abc'


问题解决:
http://www.itdb.cn/n/200605/22/n20060522_6914.shtml
分析晕了.呵呵.分析后关键代码是这样的.

SqlServer 2000 开发问题select * from sysobjects where parent_obj = object_id('abc')
SqlServer 2000 开发问题
SqlServer 2000 开发问题
select * from sysindexes where id = object_id('abc')
SqlServer 2000 开发问题
SqlServer 2000 开发问题
select * from sysindexkeys where id = object_id('abc')


所以下面这样是有道理的.

SqlServer 2000 开发问题SELECT *
SqlServer 2000 开发问题
FROM syscolumns as Col join sysobjects as Obj on ( Col.id = Obj.parent_obj )
SqlServer 2000 开发问题
WHERE (Obj.xtype = 'PK')
SqlServer 2000 开发问题
and Obj.parent_obj = object_id('abc')
SqlServer 2000 开发问题
and Obj.name IN
SqlServer 2000 开发问题(
SqlServer 2000 开发问题
SELECT name
SqlServer 2000 开发问题
FROM sysindexes as ix
SqlServer 2000 开发问题
WHERE ix.id = object_id('abc') AND ix.indid IN
SqlServer 2000 开发问题 (
SqlServer 2000 开发问题
SELECT indid
SqlServer 2000 开发问题
FROM sysindexkeys as ik
SqlServer 2000 开发问题
WHERE (id = object_id('abc') ) AND ik.colid IN
SqlServer 2000 开发问题 (
SqlServer 2000 开发问题
SELECT colid
SqlServer 2000 开发问题
FROM syscolumns as col2
SqlServer 2000 开发问题
WHERE col2.id = object_id('abc') AND col2.name = Col.name
SqlServer 2000 开发问题 )
SqlServer 2000 开发问题 )
SqlServer 2000 开发问题
SqlServer 2000 开发问题)