發表文章

目前顯示的是有「SQL」標籤的文章

MS SQL Server 無法執行 PowerShell 指令 | Powershell Error Scripts Is Disabled On This System

圖片
                                        今日檢查 Job 運作的紀錄時,突然看到一個很正常的 Job 出錯了!? syspolicy_purge_history 咦?這不是系統內建的 JOB 嗎?安裝好 SQL Server 後就存在了啊! 怎麼會報錯呢? 查看了一下錯誤內容顯示: Executed as user: NT Service\SQLSERVERAGENT. A job step received an error at line 1 in a PowerShell script. The corresponding line is 'import-module SQLPS -DisableNameChecking'. Correct the script and reschedule the job. The error information returned by PowerShell is: 'File C:\Program Files (x86)\Microsoft SQL Server\120\Tools\PowerShell\Modules\SQLPS\Sqlps.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.  File C:\Program Files (x86)\Microsoft SQL Server\120\Tools\PowerShell\Modules\SQLPS\Sqlps.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.  '.  Process Exit

[靈異事件簿] MS SQL Server Linked Server 資料源為空白時的異常行為 | Strange behavior of SQL Server Linked Server When Data Source Is Null

圖片
某日同事回報 SQL 從遠端抓取資料的時候怪怪的, 透過 Linked Server 查詢的結果跟直接連到機器上查詢的結果不一樣!😕 經檢查 Linked Server 的設定,發現設定項目怪怪的,如下圖: 在選擇 [Other data source] 選項下,並沒有特別指定 [Data source] 的項目, 也就是說 Data source IS NULL!! (大驚 👀👀👀) 建置的過程中並沒有出現任何錯誤訊息 💀💀💀 這就怪了,展開資料庫後發現 .... 怪怪的, 怪怪的, 怪怪的 怎麼連到自己本機了??? 為什麼會知道是連到自己?因為平常為了區別自己連到哪台機器, 所以會設定一個旗標資料庫(Database Flag)用來區別。 要是沒有設定這個的話,我想找老半天也很難發現疑點 Orz... 這就奇怪了,既不是使用 Linked server 名稱指定的資訊,Data source 又是空的!? 那他到底是怎麼連線的呢? 檢查建立語法也並無特別之處 只好從 [sp_addlinkedserver] 下手,看了一下發現裡面針對參數檢查主要是檢查 @srvproduct 與 @provider 這兩個值,而 @datasrc 本身就是預設 NULL, 所以當執行時也是正常的,而 [sys.sp_MSaddserver_internal] 似乎照不到,不得而知。 最後只得再找找 MDSN 了。 sp_addlinkedserver (Transact-SQL) 從文件上可以看到,若 @srvproduct 指定為 [SQL Server] 時,其他參數都不用指定, 而且會使用 @server 的內容來連線伺服器,這也是一般常用的方式。 但這次的問題是使用其他方式的連線且  Data source IS NULL,只好繼續看下去 ... 唯一最接近的就是備註內提到的 provider_name 是 [SQLNCLI] 項目: 真的是有看但沒有很懂。 目前只能推測當 data source (@datasrc) 如果沒有指定到時,預設會帶入 NULL, 而當 [OLE DB 提供者] 在初始化的過程當中,*可能*內部判斷若沒有資料來源時, 就會預設使用 本機/Localhost 來當作資料來源,而不會產生錯誤。 由於許多預設的行為無法深入查