SQL Server 2008 – 备份超过50个字符的数据库

我正在使用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个字符的长度? (虽然现在我知道是这样)。