Я использую T-SQL для резервного копирования своих баз данных MS SQL 2008:
BACKUP DATABASE @name TO DISK = @fileName
Проблема возникает, когда речь идет о базах данных, длина имен которых превышает 50 символов, например:
Затем я получаю эту ошибку:
Я знаю, что максимальная длина имени базы данных составляет 50 символов, но эта база данных была автоматически создана SharePoint, поэтому я предполагаю, что это в каком-то смысле законно.
Это похоже на то, что имя базы данных преобразуется в первые 50 символов, поэтому, конечно, он не может найти базу данных.
Пожалуйста, помогите мне взять эти базы данных в резервную копию, они очень важны. Спасибо!
РЕДАКТИРОВАТЬ:
Наконец-то я понял, почему я получил эту ошибку, благодаря mfinni.
Эта часть моего скрипта вызвала проблему:
DECLARE @name VARCHAR(50)
Я просто перешел на:
DECLARE @name VARCHAR(200)
Еще раз спасибо!
Максимальная длина символа имени базы данных в SQL Server составляет 128 символов для SQL Server 2008 R2. Поэтому вы можете сделать резервную копию базы данных, содержащей более 50 символов, с помощью BACKUP
команда в T-SQL (см. пример ниже). Вы должны убедиться, что ваш @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).
Публикация, чтобы вы могли отметить ответ: я предполагаю, что переменная @name имеет длину 50 символов? (Хотя теперь я знаю, что это так.)