Назад | Перейти на главную страницу

SQL Server 2008 - Резервное копирование баз данных с более чем 50 символами

Я использую 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 символов? (Хотя теперь я знаю, что это так.)