今天嘗試移轉SQL2008R2的SSRS到SQL2019上,然而SQL2019的RS得另外下載安裝,裝完RS後該系統會自動去SQL內的master及msdb中建立RSExecRole這一個角色並授權一些SP及Table給RS,讓RS有權限去維護SQL Agent的作業或排程等...
還原msdb時發生資料庫中未啟用 Service Broker 的錯誤訊息
- 767
- 0
- [SQL]TroubleShooting
- 2020-04-20
日前在災難復原演練過程中,將msdb資料庫備份還原到另一台新建立的測試主機時發生
訊息 14650,層級 16,狀態 1,程序 msdb.dbo.sp_send_dbmail,行 73 [批次開始行 0]
在此資料庫中未啟用 Service Broker 訊息傳遞。請使用 ALTER DATABASE 陳述式來啟用 Service Broker 訊息傳遞。
DBCC SHRINKDATABASE無法壓縮資料庫
- 5579
- 0
- [SQL]TroubleShooting
- 2020-02-18
日前將一個正式資料庫還原至測試機上,但因為測試機不需要實際資料,因此我就Truncate所有Table後再壓縮資料庫來減少測試機器的硬碟佔用空間。
Linked Server查詢動態資料遮罩(Dynamic Data Masking)資料表時發生DBCC SHOW_STATISTICS權限不足的2557錯誤
- 791
- 0
- [SQL]TroubleShooting
- 2020-02-24
日前幫同仁建了一張View去Select Linked Server中的一張資料表,建立完成後我就試著去查詢該View,此時SQL卻報出2557的錯誤訊息。該訊息內容就是我沒有DBCC SHOW_STATISTICS該資料表的權限。
利用 MAXRECURSION來突破CTE預設遞迴次數
- 3071
- 0
- [SQL]TSQL語法技巧
日前有一個需求就是每一年初產出今年所有日期的資料,並寫入資料表中。產出今年所有日期的資料的作法我是採用CTE搭配其遞迴的特性來做
AlwaysOn的可用性群組在設定複寫時會產生Cannot promote the transaction to a distributed transaction because there is an active save point in this transaction錯誤
- 562
- 0
- [SQL]TroubleShooting
- 2019-11-27
前一陣子研究AG搭配複寫時會產生Cannot promote the transaction to a distributed transaction because there is an active save point in this transaction錯誤訊息
SQL PASS 2020 第八屆幹部 甄選活動
嗨! 各位朋友,我們正在尋找2020年 SQL PASS 第八屆幹部,歡迎有熱血的技術朋友一起加入討論,互相切磋學習進步。
利用計畫指南來重用執行計畫降低CPU壓力
很久以前就聽聞過SQL的計畫指南功能,但我一直沒有用過。可以從字面上初步了解就是針對某些查詢我們可以干涉最佳化引擎,讓SQL根據我們的需求來跑執行計畫。一些官方文件的舉例就是在不異動查詢語句的狀況下讓管理者可以針對語句下hint(如MAXDOP設定及OPTIMIZE FOR或Recompile等)。
SQL鏡像憑證到期解決方案
今天開啟一部SQL主機,該主機是階段性使用,因此已經一年沒開機了。主機安裝兩個Instance,Instance A會鏡像一個DB到Instance B去。
解決SQL Server因升級後改採新型的基數估計(Cardinality Estimation)而導致的效能問題
最近由於SQL2008R2即將EOS,所以陸陸續續將資料庫升級到SQL2017的版本。而升級完成後有部分功能居然查詢時間太久導致Web TimeOut,經一番查詢後發現是新版SQL Server已在SQL2014採用新的基數估計(Cardinality Estimation簡稱CE)。而某些查詢會因為採用新版CE來估計統計反而誤用效能不好的執行計畫,官網分析有下列特性的查詢就可能發生查詢變慢的狀況。
沒有網域及DNS Server的架構下單純地用兩台Server架出SQL Server AlwaysON(Availability Group)
之前聽過老師在介紹SQL Server 2016時有提到利用Windows Server 2016及SQL Server 2016可以在無網域的狀況下建立WSFC(Windows Server Failover Clustering),因此也可以在不用網域的狀況下建立Availability Group了。
[鏡像] 多台主要mirroring到同一台副本主機
以往鏡像的範例大多是一對一建立,日前依好友的要求所以寫了這一篇二對一的架構,設定內容都一樣,只是要多設定一台而已,以下簡略寫一下步驟。
淺談計算欄位(Computed Column)的PERSISTED引數
相信很多情境下會在資料表的欄位設計上用到所謂的計算欄位(Computed Column),顧名思義該欄位存放的值就是經過計算的一個結果。然而計算欄位的資料內容一般常會是取出資料後即時運算並顯示結果,但有時候也會因為某些需求希望能將運算結果真實寫入在page中,而這個需求只要在建立資料欄位時加入一個關鍵字Persisted即可。
索引ALLOW_PAGE_LOCKS設成OFF導致無法REORGANIZE
- 1141
- 0
- [SQL]TroubleShooting
- 2018-10-26
今日收到一個錯誤告警,顯示因為頁面層級鎖定已經停用導致REORGANIZE索引發生失敗。
誤用sp_executesql導致無法享受重用執行計畫的好處
- 1407
- 0
- [SQL]TSQL語法技巧
日前檢視一支StoreProcedure時無意間發現了這一個問題。當時該SP的開發者在該SP中利用User丟進來的參數來串成他要的Query字串後再透過sp_executesql執行該語法字串。等於是在SP中組出一個Adhoc字串來跑,這樣完全無法享受到重用執行計畫的好處。
SQL登入帳號可以修改自己的密碼嗎?
- 7565
- 0
- [SQL]TSQL語法技巧
日前一位開發同仁反應他透過SSMS的UI要修改自己的密碼時都會顯示權限不足而無法修改,我試了一下發現的確如此
修改MSSQL Instance定序
日前發現一個資料庫定序跟其他資料庫不同,為求一致性,我們可以單純用Alter Database去改資料庫的定序。但這樣的改法並不會修正該資料庫中其他資料表欄位原有的定序,只會影響未來新增的資料表。所以如果舊資料表欄位也要更改定序的話會需要Alter Table Alter Column 或 建立新資料表並重倒資料。
開啟IDENTITY_INSERT選項Insert資料時會影響其他Session對相同資料表的Insert嗎?
- 3906
- 0
- [SQL]TSQL語法技巧
- 2018-07-19
近期在撰寫TSQL做資料匯入時,會因為目的資料表有Identity型態的欄位,所以得在該資料表開啟IDENTITY_INSERT後再寫入資料。
字串相加時因型態轉換而導致截斷問題
- 1054
- 0
- [SQL]TSQL語法技巧
今天同仁問了一個問題,他用字串動態組了一個超長的語法,但該字串列出來時發現中間少了一些語法,似乎是字串相加時被截掉了。
資料表壓縮的狀況下Alter Column Not Null會產生大量Log
今天Alter一張千萬筆的資料表中一個欄位為NOT NULL,結果爆了LDF