SQL Server 2005中有兩個數據庫:一個名爲「A」,另一個名爲「A_2」。 「A」是要由用戶輸入的變量名稱,第二個數據庫的「_2」前綴總是已知的。 (因此數據庫可能是「MyDB」和「MyDB_2」等)
如何從存儲過程內訪問其他數據庫而不知道實際名稱並且不使用'exec'語句?在SQL Server中使用動態名稱訪問另一個數據庫
4
A
回答
7
您可以嘗試使用新的SQL Server 2005功能,稱爲同義詞。
您需要CREATE SYNONYM,然後使用同義詞編譯並保存存儲過程。這會讓你有可能在稍後「隨時」改變同義詞。顯然,仍然有必要將CREATE SYNONYM代碼作爲動態SQL運行。
要運行CREATE SYNONYM,必須授予用戶各自的權限,或者擁有ALTER SCHEMA權限。在走這條路線之前,請務必閱讀更多關於同義詞的內容,附上一些字符串。
0
我不認爲這是可能的。
該名稱是一個變量,您不能將變量用作數據庫名稱。
所以唯一的方法就是把整個命令放到一個字符串中,然後執行它,這是你想避免的。
整個事情的目的是什麼?如果在邏輯上命名數據庫會發生什麼情況,但在某處存儲邏輯和用戶輸入的名稱之間的鏈接?
0
我所做的是爲每個我想訪問的表創建一個視圖(大概模式是相同的),然後我的後續代碼只是引用了視圖。例如
if object_id('view_Table1') is not null
drop view view_Table1
dim @cmd nvarchar(max)
set @cmd = 'create view view_Table1 as select * from ' + @DbName + '.dbo.Table1'
exec sp_executesql @cmd
select WhateverColumn from view_Table1
相關問題
- 1. 如何在SQL Server中動態使用數據庫名稱
- 2. SQL命令名稱是數據庫名稱;使用動態SQL?
- 3. 動態訪問用戶函數內的另一個數據庫中的表
- 4. 使用SQL查詢訪問另一個數據庫
- 5. 如何通過一個數據庫名稱爲在SQL Server
- 6. 多個訪問SQL Server數據庫中,一個表
- 7. 無法訪問另一臺機器上的SQL Server數據庫
- 8. 在WPF中使用c#訪問SQL Server數據庫?
- 9. SQL Server:在我的數據庫中的另一個數據庫上使用另一個表
- 10. 使用另一個數據庫名稱與dotnetnuke
- 11. 在LINQ to SQL中動態設置數據庫名稱
- 12. 在SQL Server中使用XQuery的動態名稱空間
- 13. 檢查訪問數據庫的名稱
- 14. Rails - 訪問另一個數據庫?
- 15. SQL Server數據庫與另一個數據庫表同步
- 16. 從另一個數據庫直接還原SQL Server數據庫
- 17. 如何在另一個類中訪問一個類數據庫?
- 18. 遠程訪問SQL Server數據庫
- 19. 撒克遜:訪問SQL Server數據庫
- 20. 數據庫'數據庫名稱'不可訪問
- 21. 限制SQL Server登錄訪問只有一個數據庫
- 22. 在SQL Server 2005中使用T-SQL創建數據庫別名
- 23. 在本地使用數據庫時應優先選擇哪個數據庫 - 訪問DB或Sql Server數據庫?
- 24. SQL Server動態數據庫分區
- 25. 使用SQL Server獲取12個月的數據計數名稱?
- 26. 獲取在SQL Server中提供的數據庫名稱2014
- 27. 在sql server腳本中更改數據庫名稱
- 28. 在批處理文件中傳遞數據庫名稱sql server
- 29. 什麼字符在SQL Server數據庫名稱中有效?
- 30. 在SQL Server中查找數據庫名稱
是的,這將是後備的解決方案: 編寫的軟件,這將在安裝前替換數據庫腳本與他們最後的值數據庫名稱。 我想也許有人知道另一種解決方案,比使用DBNAME()和EXEC ... – Marc 2008-11-04 10:37:30
不幸的是,你不能使用變量作爲數據庫名稱或字段名稱,而不使用exec。在數據庫腳本中進行搜索和替換很容易,所以我會這麼做。 – Biri 2008-11-04 10:42:21