作爲應用程序安裝程序的一部分,我需要將一些數據插入到已存在的數據庫中。數據庫的結構是已知的,但確切的名稱不是;即我知道我需要插入的表的名稱及其結構,但db名稱是可變的。將數據插入名稱在執行時未知的數據庫中
db名稱的結構是:AppDB_<version#>
(例如:AppDB_V20_1_2
)。不幸的是,安裝此應用程序的主要新版本時,以前的DBS保留在服務器上,所以一個查詢:
SELECT name FROM master..sysdatabases WHERE name LIKE 'AppDB%'
返回多個結果。
是否可以創建一個在整個結果範圍內插入相同表的查詢?
也就是說,如果我有數據庫:
AppDB_V1
AppDB_V2
AppDB_V3
我可以編寫一個查詢,有效的作用:
INSERT INTO [AppDB_V1].[dbo].[TableName] ...
INSERT INTO [AppDB_V2].[dbo].[TableName] ...
INSERT INTO [AppDB_V3].[dbo].[TableName] ...
不知道AppDB
小號事先的編號或名稱?
你可以像['sp_foreachdb'](http://weblogs.sqlteam.com/joew/archive/2008/08/27/60700.aspx)那樣使用一些愚蠢的東西,但我建議使用一致的名稱數據庫的當前版本,例如('AppDB'),如果您絕對需要舊版本(這就是備份的目的,btw),然後將其重命名爲版本號。 –
@Dave不幸的是,數據庫命名方案已經不在我的手中了,因爲對於每個人來說都會更好。 –
您可以將它設置爲應用程序安裝前手動設置的配置值嗎?另一種方法是修改安裝程序或使用InstallShield或類似的東西,讓管理員用戶進行安裝以輸入數據庫名稱,您可以從中創建必要的連接字符串。 –