我正在使用 T-SQL 备份我的 MS SQL 2008 数据库:
BACKUP DATABASE @name TO DISK = @fileName
当数据库名称长度超过 50 个字符时,就会出现问题,如下所示:
然后我收到这个错误:
我知道数据库名称的最大长度是 50 个字符,但是该数据库已由 SharePoint 自动创建,因此我认为它在某种程度上是合法的。
就像如果它将数据库名称限制为前 50 个字符,那么它当然找不到数据库。
请帮我备份这些数据库,它们至关重要。谢谢!
编辑:
我终于找到了为什么会出现这个错误,感谢姆芬尼。
这是我的脚本中导致问题的部分:
DECLARE @name VARCHAR(50)
我只是改为:
DECLARE @name VARCHAR(200)
再次感谢!
答案1
SQL Server 中数据库名称的最大字符长度为128 个字符适用于 SQL Server 2008 R2。因此,您可以使用 T-SQL 中的命令备份包含超过 50 个字符的数据库BACKUP
(例如,见下文)。您需要确保您的@name
变量可以容纳超过 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).
答案2
发布以便您可以标记答案:我猜测@name变量的长度定义为50个字符?(虽然现在我知道情况确实如此。)