2017-05-31 55 views
0

我試圖通過SQL Server 2012中打開一個網頁的網址,我們試圖SQLCLR但其outdadted,我們試圖運行一個批處理文件,它會粘在執行過程中打開一個URL與SQL Server 2012

EXEC xp_cmdshell 'c:\PATH.bat' 

是這樣的代碼,我們用來打開批處理文件,然後將其卡在執行查詢和我等待5分鐘仍然沒有彈出

enter image description here

我們已經通過文件權限檢查

,一切都被允許,它是第四次嘗試這和我無法管理可以有人請給我看一個替代解決方案?

+0

沒有,SQLCLR沒有比試圖使用舊的,不安全的更加不合時宜,不鼓勵'xp_cmdshell'。事實上,試圖從數據庫中「打開URL」聽起來像是一個非常糟糕的設計。這是SSIS或外部應用程序的工作。 *不*數據庫。只需使用適當的工具進行工作 –

+1

順便說一句*過時的SQLCLR *是權力hierarchyid和空間類型 –

+0

我是新來的這項工作,什麼SSIS,我們嘗試的SQLCLR的方法已過時 –

回答

0

儘管從SQL Server內部訪問URL有優點和缺點,但SQLCLR絕對是而不是已過時。即使你有沒有自定義組件,它仍然被用於內部幾件事情:

  • 層次,幾何,地理數據類型
  • 複製
  • 內置多種功能,如FORMATTRY_PARSE

有關SQLCLR什麼實際並能做到,請參閱該系列的,我對SQL Server的中央這個話題寫文章的詳細信息:Stairway to SQLCLR(免費註冊是需要閱讀該網站上的內容,但它是值得的:-)。等級1(「什麼是SQLCLR?」)是對SQLCLR是什麼和不是什麼的全面考察。

如果你想要一個命令行實用程序,那麼你可能能夠脫身使用curl

如果你想有一個預先製作SQLCLR功能,可以處理這個,這樣你就不必擔心在SQLCLR做這樣的操作的學習曲線,那是我創建的SQL#庫可用(但它不在免費版本中;僅適用於完整/付費版本)。


,如果你是將要作出一個觸發器中這個URL /網頁服務隊電話(無論是SQLCLR觸發器或T-SQL觸發器調用SQLCLR對象),那麼你需要非常因爲觸發器在系統創建的事務中執行(如果沒有顯式事務已經存在)。這意味着事務的實際提交(即真正將更改保存到數據庫)將等待外部呼叫完成。你碰到這裏的兩個問題是:

  • Web服務不響應的超快速(和它需要迴應超級快)
  • 有特定URI這樣做更多的併發請求.NET等待,直到有一個開放。這由ServicePointManager.DefaultConnectionLimit控制,可以通過HttpWebRequest對象訪問(我認爲有ServicePoint屬性)。默認限制爲2,所以任何超過1 - (一般來說)3調用每秒Web服務可能導致阻塞,即使Web服務具有快速的反應能力。每秒1 - 3次調用可能看起來不多,但如果在多個表的審計觸發器方案中使用此方法,則很容易達到此限制。因此,您需要將限制增加到遠高於2的限制,並且每次調用都會存儲在應用程序域中,因爲內存壓力有時會被卸載。

欲瞭解更多信息和注意事項,請在這裏看到的S.O我的相關回答類似的問題:

此外,此S.O.問題是希望得到附近的DML變化實時通知方面非常相似,並可能適用於你的目標:

SqlDependency vs SQLCLR call to WebService

+0

非常感謝我現在就開始研究它 –

+0

@PioSammut開始研究什麼,到底是什麼?你是非常含糊的,如果你真的想在觸發器中做這個審覈變更,那麼我可能會改變,或至少澄清我的建議。請更新這個問題,具體來說,你正試圖完成。 –

+0

聽着哥們兒,你不需要這麼生氣,我的工作場所迫使我這樣做,而我對SQL有初學者的知識,感謝你的建議,對不起,沒有給出很多細節,我不允許因爲它在政府之下,所以我要問一個我一無所知的問題,所以對不知道的事情感到抱歉 –