0

我正在维护一个使用 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。

4

1 回答 1

1

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

DBCC CHECKIDENT(N'[e安丞北e].[CsSchema].[CsMyDataType]', RESEED) WITH NO_INFOMSGS
于 2009-09-09T13:50:23.433 回答