我正在维护一个使用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。
答案 0 :(得分:1)
尝试将字符串作为unicode(see KB)传递:
DBCC CHECKIDENT(N'[e安丞北e].[CsSchema].[CsMyDataType]', RESEED) WITH NO_INFOMSGS