具體問題解決 分離指令碼

2022-02-14 11:22:27 字數 2025 閱讀 6886

有時候需要從乙個伺服器轉移資料庫到另乙個。如果打算一下子分離所有資料庫,那麼下面的指令碼就是有用了。

生成分離指令碼:

select

distinct

'use master;'+

char(10) +'go

'+char(10) +'

alter database ['+

convert(varchar(500), db_name(database_id)) +']

'+'set single_user with rollback immediate'+

char(10) +

'use master;'+

char(10) +'go

'+char(10) +'

exec master.dbo.sp_detach_db @dbname = n'+

''''

+convert(varchar(500), db_name(database_id)) +

''''+'

;'+char(10) +'

go'+char(10)

from master.sys.master_files where

db_name(database_id) not

in ( '

master

', '

model

', '

msdb

', '

tempdb

' )

這個指令碼生成了需要分離資料庫的指令碼。在where子句中排除了四個系統資料庫。

附加資料庫操作指令碼:

下面將生成乙個指令碼來分離資料庫。確保執行在原伺服器上。因為一旦你分離資料庫,資料庫將在原來的伺服器上消失。

指令碼基於乙個重要假設,假定每個資料庫只包含乙個資料檔案和乙個日誌檔案。如果有資料庫例項帶有多個資料或者日誌檔案,還要手動分離。另外,指令碼假定源和目標伺服器有相同的檔案路徑。如果日誌或者資料檔案路徑不同,也需要重新替換生成的指令碼。

select

distinct

'use master;'+

char(10) +'go

'+char(10) +'

create database ['+

convert(varchar(500), db_name(x.database_id)) +']

'+'on '+

char(10) +

'( physical_name = n'+

''''

+ x.physical_name +

''''+'

),'+char(10) +'

( physical_name = n'+

''''

+ y.physical_name +

''''+'

)'+char(10) +

'for attach'+

char(10) +'

go'from master.sys.master_files x, master.sys.master_files y

where

db_name(x.database_id) not

in ( '

master

', '

model

', '

msdb

', '

tempdb

' )

and x.database_id = y.database_id and x.physical_name like

'%mdf

'and y.physical_name like

'%ldf

'

具體問題解決 分離指令碼

原文 具體問題解決 分離指令碼 有時候需要從乙個伺服器轉移資料庫到另乙個。如果打算一下子分離所有資料庫,那麼下面的指令碼就是有用了。生成分離指令碼 select distinct use master char 10 go char 10 alter database convert varchar...

oom問題解決

dalvik虛擬機會為應用程式分配固定大小的heap 如果使用超過了這個heap的大小,且沒有可被 物件,就會報oom。多張較大會迅速占用空間造成oom。我們可以使用一下的方法來減少這種情況的產生 1.減少單張的大小,根據螢幕大小來對bitmap做resize。private void setima...

too many open files問題解決辦法

今天用 往liunx中寫檔案,檔案很多 執行一會就日誌上就報錯 too many open files 結果找了半天才解決這個問題,現在給大家分享一下。首先用 ulimit a 命令看看linux的open files值是多少,結果乙隻有1024,不夠用的。然後修改linux的配置檔案,修改 etc...