SQL 2005 - быстрый способ быстро копировать базу данных + данные

Из документации :

Вы не можете вставлять значения TRUE и FALSE в столбец базы данных. Вы не можете выбрать или получить значения столбца в переменной BOOLEAN. Функции, вызываемые из запроса SQL, не могут принимать какие-либо параметры BOOLEAN. Также нет встроенных функций SQL, таких как TO_CHAR; для представления значений BOOLEAN на выходе, вы должны использовать конструкции IF-THEN или CASE для перевода значений BOOLEAN в какой-либо другой тип, например 0 или 1, 'Y' или 'N', 'true' или 'false' и т. д.

blockquote>

Вам нужно будет создать функцию-обертку, которая будет использовать тип данных SQL и использовать его вместо этого.

17
задан dfasdljkhfaskldjhfasklhf 14 January 2009 в 15:46
поделиться

7 ответов

Отсоедините базу данных, скопируйте.MDF файл (и .ldf файл), и можно присоединить обоих. Или только один, для хранения того как копии для быстрой копии позже.

команда "Copy database" от Studio управления SQL Server Mcirosoft может также работать как это.

можно автоматизировать/писать сценарий это легко, с помощью PowerShell или просто.Cmd файлы с вызовами к osql.

14
ответ дан 30 November 2019 в 13:54
поделиться

И можно также использовать Studio управления SQL UI, чтобы создать резервное копирование файлов, и затем восстановить его в новую базу данных по тому же или любому другому серверу.

2
ответ дан 30 November 2019 в 13:54
поделиться

В SQL 2005 я сказал бы, что самый быстрый путь состоит в том, чтобы использовать Базу данных Копии под Базой данных-> Задачи

, источник и место назначения могут быть тем же, и это позволяет Вам переименовывать базу данных при желании.

2
ответ дан 30 November 2019 в 13:54
поделиться

Существует инструмент командной строки (DOS) для создания и восстановления баз данных.

Также можно выполнить это как сценарий T-SQL. http://www.sqlmag.com/Article/ArticleID/46560/sql_server_46560.html

1
ответ дан 30 November 2019 в 13:54
поделиться

Я использовал бы сценарии, поскольку это помогает прозрачности того, что Вы делаете.
(Особенно, если Вы хотите сделать это часто, как, изменения, у каждого будут немного отличающиеся данные.)

Однако, если Вы не хотите переходить к стычке создания сценариев, самый легкий путь состоит в том, чтобы скопировать и затем восстановить к другому имени.

0
ответ дан 30 November 2019 в 13:54
поделиться

Если Вы хотите написать сценарий его, можно использовать следующее. Это является также лучшим, если Вы не можете вывести дб из эксплуатации:

USE master
GO

-- the original database (use 'SET @DB = NULL' to disable backup)
DECLARE @DB varchar(200)
SET @DB = 'PcTopp'

    -- the backup filename
DECLARE @BackupFile varchar(2000)
SET @BackupFile = 'c:\pctopp\sqlserver\backup.dat'

-- the new database name
DECLARE @TestDB varchar(200)
SET @TestDB = 'TestDB'

-- the new database files without .mdf/.ldf
DECLARE @RestoreFile varchar(2000)
SET @RestoreFile = 'c:\pctopp\sqlserver\backup'


-- ****************************************************************
--                    no change below this line
-- ****************************************************************


DECLARE @query varchar(2000)

DECLARE @DataFile varchar(2000)
SET @DataFile = @RestoreFile + '.mdf'

DECLARE @LogFile varchar(2000)
SET @LogFile = @RestoreFile + '.ldf'

IF @DB IS NOT NULL
BEGIN
    SET @query = 'BACKUP DATABASE ' + @DB + ' TO DISK = ' + QUOTENAME(@BackupFile, '''')
    EXEC (@query)
END

-- RESTORE FILELISTONLY FROM DISK = 'C:\temp\backup.dat'
-- RESTORE HEADERONLY FROM DISK = 'C:\temp\backup.dat'
-- RESTORE LABELONLY FROM DISK = 'C:\temp\backup.dat'
-- RESTORE VERIFYONLY FROM DISK = 'C:\temp\backup.dat'

IF EXISTS(SELECT * FROM sysdatabases WHERE name = @TestDB)
BEGIN
    SET @query = 'DROP DATABASE ' + @TestDB
    EXEC (@query)
END

RESTORE HEADERONLY FROM DISK = @BackupFile
DECLARE @File int
SET @File = @@ROWCOUNT

DECLARE @Data varchar(500)
DECLARE @Log varchar(500)

SET @query = 'RESTORE FILELISTONLY FROM DISK = ' + QUOTENAME(@BackupFile , '''')

CREATE TABLE #restoretemp
(
 LogicalName varchar(500),
 PhysicalName varchar(500),
 type varchar(10),
 FilegroupName varchar(200),
 size int,
 maxsize bigint
)
INSERT #restoretemp EXEC (@query)

SELECT @Data = LogicalName FROM #restoretemp WHERE type = 'D'
SELECT @Log = LogicalName FROM #restoretemp WHERE type = 'L'

PRINT @Data
PRINT @Log

TRUNCATE TABLE #restoretemp
DROP TABLE #restoretemp

IF @File > 0
BEGIN
    SET @query = 'RESTORE DATABASE ' + @TestDB + ' FROM DISK = ' + QUOTENAME(@BackupFile, '''') + 
        ' WITH MOVE ' + QUOTENAME(@Data, '''') + ' TO ' + QUOTENAME(@DataFile, '''') + ', MOVE ' +
        QUOTENAME(@Log, '''') + ' TO ' + QUOTENAME(@LogFile, '''') + ', FILE = ' + CONVERT(varchar, @File)
    EXEC (@query)
END
GO

Скопированный с: http://weblogs.asp.net/mschwarz/archive/2004/08/26/220735.aspx

0
ответ дан 30 November 2019 в 13:54
поделиться

Еще одна опция добавить,

Вот запись в блоге, которая говорит об использовании Мастера Печати по базе данных и как это используется для экспорта всех элементов базы данных, включая данные, в файл SQL. Могло бы быть полезным и кажется довольно простым.

http://blog.sqlauthority.com/2007/11/16/sql-server-2005-generate-script-with-data-from-database-database-publishing-wizard/

0
ответ дан 30 November 2019 в 13:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: