1

以及我有SQL 2008的快遞,現在我已經安裝,SQL服務器,現在我想刪除SQL Express,但在這種情況下,我有我的所有數據庫我已經工作(加上20),所以他們對我來說非常重要,我怎麼能把它傳遞到SQL Server 2008 R2,我知道我可以做所有的數據庫,但我不想工作很多,有一個途徑,爲了傳遞數據庫?應付一個文件夾?什麼?謝謝!如何通過所有數據庫(快速),因爲SQL Server 2008快遞到SQL Server 2008 R2(NO快遞)

回答

2

我附上所有的數據庫,我補充說,所有的(但一拖一)我添加了所有在同一個窗口,並在5 minutos我把所有數據庫的SQL(沒有明確)

+0

回答了你自己的問題,不是嗎? – ewall 2011-04-28 01:00:09

+1

是的,我發現如何做到這一點,我公開它,爲未來,當其他用戶做同樣的問題,然後找到我的問題,並觀看答案:) – angel 2011-04-28 01:05:10

1

創建SSIS包4個步驟。

首先,備份所有數據塊到特定位置的執行SQL任務:

exec sp_msforeachdb ' 
IF DB_ID(''?'') > 4 
Begin 
BACKUP DATABASE [?] TO DISK = N''\\Backups\?.BAK'' WITH NOFORMAT, INIT, 
NAME = N''?-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD 
declare @backupSetId as int 
select @backupSetId = position from msdb..backupset where database_name=N''?'' 
    and backup_set_id=(select max(backup_set_id) from msdb..backupset 
where database_name=N''?'') 
if @backupSetId is null begin 
    raiserror(N''Verify failed. Backup information for database ''''?'''' not found.'', 16, 1) 
end 
RESTORE VERIFYONLY FROM DISK = N''\\Backups\?.BAK'' WITH 
    FILE = @backupSetId, NOUNLOAD, NOREWIND 
End 
' 

其次,創建一個SP使用位置和數據庫名稱的變量恢復DBS:

CreatePROCEDURE [dbo].[uSPMas_RestoreDB] @DBname   NVARCHAR(200), 
             @BackupLocation NVARCHAR(2000) 
AS 
    BEGIN 
     SET nocount ON; 

    create table #fileListTable 
(
    LogicalName   nvarchar(128), 
    PhysicalName   nvarchar(260), 
    [Type]    char(1), 
    FileGroupName  nvarchar(128), 
    Size     numeric(20,0), 
    MaxSize    numeric(20,0), 
    ) 
insert into #fileListTable EXEC('RESTORE FILELISTONLY FROM DISK = '''[email protected][email protected]+'.bak''') 

Declare @Dname varchar(500) 
Set @Dname = (select logicalname from #fileListTable where type = 'D') 
Declare @LName varchar(500) 
Set @LName = (select logicalname from #fileListTable where type = 'L') 

declare @sql nvarchar(4000) 
SET @SQL = 'RESTORE DATABASE ['+ @dbname +'] FROM 
DISK = N'''[email protected] + @dbname +'.BAK'' WITH FILE = 1, 
MOVE N'''+ @Dname +''' TO N''E:\YourLocation\'+ @dbname +'.mdf'', 
MOVE N'''+ @LName +''' TO N''D:\Your2ndLocation\'+ @dbname +'_log.ldf'', 
    NOUNLOAD, REPLACE, STATS = 10' 

exec sp_executesql @SQL 

drop table #fileListTable 
    END 

第三,創建一個ForEach循環容器,並將一個執行Sql語句與變量:

EXEC uSPMas_RestoreDB ? , ? 

使用的foreach循環容器傳遞變量

四,創建「傳輸登錄」任務搬過來的所有DB登錄

+0

張貼代碼時,請正確格式化(使用'編輯器上方的{}按鈕,或手動將其縮進四個空格)。它使它可讀(並嘗試用語法突出顯示它) – 2011-04-28 07:32:39

相關問題