DBCC CHECKIDENT问题,表名中包含中文字符

时间:2009-09-09 13:16:54

标签: sql-server localization cjk

我正在维护一个使用SQL Server Express 2005作为后端的应用程序。该应用程序允许用户创建新数据库并提供新数据库的名称。

当应用程序加载默认数据时,我进行以下SQL调用:

DBCC CHECKIDENT('[myDB].[CsSchema].[CsMyDataType]', RESEED) WITH NO_INFOMSGS

只要一切都是英文的,代码就可以正常工作。

但是如果用户在数据库名称中指定了中文字符,则调用如下所示:

DBCC CHECKIDENT('[e安丞北e].[CsSchema].[CsMyDataType]', RESEED) WITH NO_INFOMSGS

此调用失败,并显示以下错误消息: “无法找到数据库'e ???'。数据库要么不存在,要么在语句尝试使用之前被删除。”

我使用正常工作的数据库名称进行许多其他调用。例如,此语句执行时没有问题。

SET IDENTITY_INSERT [e安丞北e].[CsSchema].[CsMyDataType] OFF

该错误似乎特定于DBCC CHECKIDENT调用。有什么想法吗?

注意:我正在使用中文版的Windows XP。

1 个答案:

答案 0 :(得分:1)

尝试将字符串作为unicode(see KB)传递:

DBCC CHECKIDENT(N'[e安丞北e].[CsSchema].[CsMyDataType]', RESEED) WITH NO_INFOMSGS