我正在使用T-SQL来备份我的MS SQL 2008数据库:
BACKUP DATABASE @name TO DISK = @fileName
当涉及名称长度大于50个字符的数据库时会出现这样的问题:

然后我得到这个错误:

我知道数据库名称的最大长度是50个字符,但是这个数据库是由SharePoint自动创build的,所以我认为这是合法的。
这就好像它把数据库名称中的前50个字符,所以它当然不能find数据库。
请帮我把这些数据库备份,这些都是至关重要的。 谢谢!
编辑:
我终于find了为什么我得到这个错误,感谢mfinni 。
这是我的脚本造成问题的部分:
DECLARE @name VARCHAR(50)
我只是改为:
DECLARE @name VARCHAR(200)
再次感谢!
SQL Server 2008 R2中,数据库名称的最大字符长度为128个字符 。 因此,您可以使用T-SQL中的BACKUP命令(例如,请参阅下文) BACKUP超过50个字符的数据库。 您需要确保您的@namevariables可以保存超过50个字符。
例:
CREATE DATABASE MoreThan50characters_abcdefghijklmnopqrstuvwxyz12345; BACKUP DATABASE MoreThan50characters_abcdefghijklmnopqrstuvwxyz12345 TO DISK = 'MyFile_deleteme.bak';
给我这个输出:
Processed 168 pages for database 'MoreThan50characters_abcdefghijklmnopqrstuvwxyz12345', file 'MoreThan50characters_abcdefghijklmnopqrstuvwxyz12345' on file 3. Processed 2 pages for database 'MoreThan50characters_abcdefghijklmnopqrstuvwxyz12345', file 'MoreThan50characters_abcdefghijklmnopqrstuvwxyz12345_log' on file 3. BACKUP DATABASE successfully processed 170 pages in 0.246 seconds (5.390 MB/sec).
发布以便您可以标记答案:我猜测@namevariables被定义为50个字符的长度? (虽然现在我知道是这样)。