iT邦幫忙

0

T-SQL語法請教

請問各位前輩,如果我在一台主機上有三個DB,我同時想對這三個DB做Create table相同的語法,可以一次完成嗎?先謝過,感恩

1
77012904
iT邦新手 4 級 ‧ 2018-09-20 07:52:10
最佳解答

給你一個更簡單的.

用sp_MSforeachdb 這個sp來做

它會自動列舉一個伺服器裡面的所有資料庫,用?代替,你只要use ?,就可以切到該資料庫,然後執行你要的語法了.

後面接的就是你的run的語法的字串. (單、雙引號請自行注意)

不過用這個sp的話debug不容易,要跑的東西先測好才放進來.

sp_MSforeachdb  'IF "?" not in ("pubs", "distribution", "Northwind", "model", "msdb","master", "tempdb", "ReportServerTempDB", "ReportServer") 
BEGIN 
USE ?  
    --do something
    --例如
    select * from testTbl
END'
lungzen iT邦新手 4 級 ‧ 2018-09-21 10:01:45 檢舉

高手,感恩

圓頭人 iT邦新手 3 級 ‧ 2018-09-25 15:29:32 檢舉

很好用,謝謝大大

sp_MSforeachdb  'IF "?" not in ("pubs", "distribution", "Northwind", "model", "msdb","master", "tempdb", "ReportServerTempDB", "ReportServer") 
BEGIN 
USE ?  
    --do something
    --例如
     SELECT top 5 ''?'' as DBName,  * from test
END'

key word : sql for each database
ref
https://www.sqlservercentral.com/Forums/Topic1195433-145-1.aspx
內含sp_MSforeachdb & currsor 用法
https://www.mssqltips.com/sqlservertip/1414/run-same-command-on-all-sql-server-databases-without-cursors/

圓頭人 iT邦新手 3 級 ‧ 2018-09-25 15:34:15 檢舉

del me

0
暐翰
iT邦大師 7 級 ‧ 2018-09-19 16:30:56

我同時想對這三個DB做Create table相同的語法

可以,關鍵字 dblink
參考這篇
[MSSQL]建立連結伺服器(DB LINK) - 虎搞瞎搞

lungzen iT邦新手 4 級 ‧ 2018-09-19 16:38:12 檢舉

您好,抱歉,應該是我沒說明清楚

是希望能有個像FOR迴圈這樣,為每個DB做相同的動作

只是希望能懶惰一下^_^

lungzen iT邦新手 4 級 ‧ 2018-09-19 16:49:19 檢舉
lungzen iT邦新手 4 級 ‧ 2018-09-19 16:49:28 檢舉

謝謝唷

0
小魚
iT邦好手 1 級 ‧ 2018-09-19 19:19:02

如果是同一個資料庫系統裡面的三個資料庫,
是可以一起做的,
如果是三個獨立的資料庫系統,
要連結只能用Link Server了,
但是Link Server好像不能用寫的,
只能用讀的...
所以還是要分三次。

我要發表回答

立即登入回答