請教各位 我在轉入數據資料時出現以下錯誤訊息 請問是什麼原因?? 謝謝
Server: Msg 213, Level 16, State 5, Line 1
插入错误: 列名或所提供值的数目与表定义不匹配。
leonjaykai 发表于 2010-3-5 23:16  当SQLSERVER2000发生下面错误时,Msg 446, Level 16, State 9, Server CTSSERV, Line 1 Cannot resolve collation conflict for equal to operation(中文: 无法解决 equal to 操作的排序规则冲突。),这是因为在数据库中的各个表的字符集(SQLSERVER2000叫排序规则)不一致造成的,这时需要手工改表中列的排序规则或者整个数据库的排序规则。改列的排序规则可以在企业管理器中修改,如下图红色标识部分。
也可以用如下的命令行来改数据库,表、或者列的排序规则: - Alter datebase Alter
- datebase 数据库 Chinese_PRC_BIN
-
- ALTER TABLE tb
- ALTER COLUMN colname nvarchar(100) COLLATE
- Chinese_PRC_CI_AS
- --不区分大小写
- ALTER TABLE tb
- ALTER COLUMN colname nvarchar(100)
- COLLATE Chinese_PRC_CS_AS
- --区分大小写
复制代码使用如下命令,可以获得更多的规则:
- SELECT *
- FROM ::fn_helpcollations()
复制代码
更改数据库排序规则后,表中字段的排序规则仍然没变,如果在企业管理器中在设计表的界面去一个字段一个字段的改太累人了,
- EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE
-
- update dbo.syscolumns set
- collationid=65572 where collationid=53284
-
- EXEC sp_configure 'allow
- updates',0 RECONFIGURE WITH OVERRIDE
- go
- if
- exists (select
- *
- from dbo.sysobjects where id =
- object_id(N'[dbo].[p_killspid]') and
- OBJECTPROPERTY(id, N'IsProcedure') =
- 1)
- drop
- procedure
- [dbo].[p_killspid]
- GO
- create
- proc p_killspid
- @dbname
- varchar(200) --要关闭进程的数据库名
- as
- declare
- @sql
- nvarchar(500)
- declare
- @spid
- nvarchar(20)
-
- declare #tb cursor
- for
- select spid=cast(spid as
- varchar(20)) from master..sysprocesses where dbid=db_id(@dbname)
- open #tb
- fetch
- next
- from #tb into
- @spid
- while
- @@fetch_status=0
- begin
- exec('kill '+@spid)
- fetch
- next
- from #tb into
- @spid
- end
- close #tb
- deallocate #tb
- go
- --关闭用户连接
- exec p_killspid '数据库名'
- go
- --修改排序规则
- Alter datebase Alter datebase 数据库名 Chinese_PRC_BIN
复制代码
|