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

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

我正在使用 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个字符?(虽然现在我知道情况确实如此。)

相关内容