這可能有點奇怪的問題,但是如果鏈接服務器是Oracle或SQL服務器,我將如何能夠確定存儲過程內部?以編程方式確定鏈接服務器是Oracle還是SQL Server
爲了給出一點上下文,我們有一個應用程序在生產中查詢包含PID(個人身份信息)的鏈接服務器(Oracle服務器,不是我們的),因此我們不允許在我們的開發中使用它和測試環境。我們很遺憾不能建立我們自己的Oracle服務器,所以在我們的環境中進行測試時,我們已經設置了一個SQL Server實例作爲鏈接服務器,並將其中的數據模擬起來。
對於我們查詢的99%,這不會造成任何問題,只是一個與這條線在它
WHERE LAST_MODIFIED > TO_DATE(''''' + CONVERT(nvarchar(24), @maxImageDate, 120) + ''''',''''YYYY-MM-DD HH24:MI:SS'''')
我們在開發和測試環境通常手動修改爲
WHERE LAST_MODIFIED > ''''' + CONVERT(nvarchar(24), @maxImageDate, 120) + '''''
我的第一個想法是嘗試一個只能在oracle上運行的查詢:
SELECT 1 FROM OPENQUERY(LinkedServerName, ''SELECT * FROM v$version'')
in a TRY/CATCH並運行不同的查詢(如果失敗,但會導致事務在捕獲錯誤後仍不可承諾)
我們開始使用octodeploy進行自動部署,我們可以讓觸手代理運行SQL腳本根據環境修改SP,但寧願將所有的邏輯和代碼保存在SP中,因此在回購中,但如果我們不能找出另一種解決方案,我們可能會採取這種做法。
任何幫助,將不勝感激
檢查'SELECT * FROM sys.servers' – lad2025
如何在你的MSSQL開發服務器上創建一個名爲TO_DATE()的函數,它只返回第一個參數。 –
這可能正是我需要的lad2025。謝謝,我會測試並看看我什麼時候有機會 –