我在我的服務器中有十到二十個數據庫。每當我需要查詢我想把這樣的事情如何在查詢中縮短或別名數據庫名稱?
Select * from otp-devices.dbo.deviceid
select module from mr1ghp/security.dbo.alarmmodlink
我們的數據庫名稱很長。是否有可能縮短或別名數據庫名稱查詢otp-devices
mr1ghp/security
我在我的服務器中有十到二十個數據庫。每當我需要查詢我想把這樣的事情如何在查詢中縮短或別名數據庫名稱?
Select * from otp-devices.dbo.deviceid
select module from mr1ghp/security.dbo.alarmmodlink
我們的數據庫名稱很長。是否有可能縮短或別名數據庫名稱查詢otp-devices
mr1ghp/security
你可以讓一個別名與關鍵字AS這樣的:
SELECT * FROM `otp-devices.dbo.deviceid ` AS otp
對於一個查詢,這是正確的。但我已經看到了從數據庫級別本身做到的一種方法。也就是說,我們可以在我們的sql服務器的任何地方使用該名稱作爲數據庫名稱。 – coffemug
@coffemug在SQL Server中沒有類似的東西。除了可能的sqlcmd變量。 –
另一種可能性是使用視圖來提供到其他數據庫中表的鏈接。使用命名約定來確定視圖鏈接到哪個數據庫。這也有助於將代碼與數據庫名稱的任何更改隔離開來。
CREATE VIEW vOD_deviceid AS SELECT * FROM [otp-devices].dbo.deviceid ;
和
CREATE VIEW vSC_alarmmodlink AS SELECT * FROM mr1ghp/security.dbo.alarmmodlink
然後在其他地方
SELECT * FROM vOD_deviceid; -- OD prefix identifies the database
SELECT module FROM vSC_alarmmodlink;
剛剛替補視圖名稱只要你會使用完整的database.schema.tablename。
我不明白你的問題。首先,'otp-devices.dbo.deviceid'不是數據庫的有效名稱。它接近表引用(但連字符不正確)。你的問題是什麼?大量的數據庫或大量的表? –
@GordonLinoff。 dbo是模式,deviceid是表。 – coffemug
@GordonLinoff,更新了問題 – coffemug