Tag Archives: MSSQL

WhoIsActive for Azure

之前和大家分享了一些 十分有用的SQL Script
用來 Monitor / 檢查 SQL Server 
MS SQL Notes – Database Management Scripts
今日同事想查詢公司某一個Database 有什麼query 正在執行

在這個情況..使用sp_whoisactive 這個script 便最適合了
可以看到有什麼query在執行..和已經執行多久
可惜嘗試在 Azuredatabase 安裝時出現了些問題
應該是permission的問題..不能在master上執行

做了一會research之後發現..原來他有一個給Azure 用的WhoIsActive script
只需要在每一個Azure 上的Database 執行便可以了

詳情可以考以下Blog Post

http://sqlblog.com/blogs/adam_machanic/archive/2016/04/14/sp-whoisactive-for-azure-sql-database-attempt-2.aspx

或到以下網址下載這個WhoIsActive script
http://sqlblog.com/blogs/adam_machanic/attachment/61064.ashx

Hope you find it useful

MS SQL Notes – Database Management Scripts

最近有機會去接觸公司的Database
可以幫忙performance tuning
很可惜在之前的公司沒有好好的記下一些有用的script
今日想和大家分享一些有用的Database Management script
和用來check Database 的東西
以下有兩個網頁
https://ola.hallengren.com/

這個提供了一些SQL Server Backup, Integrity Check, and Index and Statistics Maintenance的script/解決建議
Script 可以在這裡下載
https://ola.hallengren.com/scripts/MaintenanceSolution.sql
SQL Server Maintenance Solution


http://whoisactive.com/
提供了script來幫助 Monitor SQL Server
去到網頁入面便可以download之後在 SQL Server Management Studio上執行便可以安裝這些script了
sp_whoisactives

有時間再和大家介紹他們的use case

Hope you find it useful

SQL Server TSQL how to View Index Fragmentation – 如何查詢資料庫的索引碎片 資料

今天在研究 Database Performance / 資料庫效能時發現..
原來Database 會像我們的硬碟一樣..會出現 Fragmentation/碎片 的
如果Fragmentation 越大..
Database的效能便會越差..
當然每天的Database Maintenance plan 應該是可以解決這些問題的

今天想和大家分享一個SQL Query 用來 查詢 Database Index 的 Fragmentation資料庫的索引碎片

首先我們要選擇想查詢的 database
之後執行以下的SQL Query

SELECT OBJECT_NAME(st.object_id) AS TableName, 
i.name AS IndexName, 
st.index_type_desc,
st.avg_fragmentation_in_percent, 
st.fragment_count, 
st.avg_fragment_size_in_pages, 
st.page_count, 
st.avg_page_space_used_in_percent, 
st.record_count,
 st.index_depth, st.index_level,st.partition_number, 
st.ghost_record_count, 
st.min_record_size_in_bytes, st.max_record_size_in_bytes, st.avg_record_size_in_bytes
FROM  sys.dm_db_index_physical_stats(DB_ID(DB_Name()), NULL, NULL, NULL , 'SAMPLED') as st
JOIN sys.indexes i 
ON st.object_id = i.object_id AND st.index_id = i.index_id
WHERE index_type_desc <> 'HEAP'

Database Fragmentation

之後他便出輸出很多有用的資訊
我對下面的幾個資訊比較有興趣
avg_fragmentation_in_percent – IN_ROW_DATA 配置單位中,索引的邏輯片段或是堆積的範圍片段。其值以百分比表示,而且會考量多個檔案

fragment_count – IN_ROW_DATA 配置單位分葉層級中的片段數目

avg_page_space_used_in_percent
– 所有頁面所用之可用資料儲存空間的平均百分比。 如果是索引,則為 IN_ROW_DATA 配置單位中 B 型樹狀目錄目前層級的平均數。 如果是堆積,則為 IN_ROW_DATA 配置單位中所有資料頁的平均數。

record_count-總記錄數。

有關Database Index 的 Physical statiic 的資料.可以參考以下網頁
https://msdn.microsoft.com/en-us/library/ms188917.aspx

Index Info

Hope you find it useful

Convert RedGate SQL Backup from sqb file to .bak via GUI – 如何轉換 Redgate的 sqb file 到 SQL Server 能restore的 .bak 檔案 用 GUI 使用者介面

在之前的網誌和大家介紹了如何使用 sqb2mtf.exe 的指令來轉換 RedGate SQL Backup Tool 備份的 SQL Database .sqb 檔案 轉換為一個 Microsoft SQL Server 可以Restore/復原的 備份檔案格式 .bak

今天發現了..原來有一個有介面的功具.
使用方法也十分簡單
我們以到以下網址下載.. [不用安裝的]
http://downloads.red-gate.com/labs/SQBConverterGUI.zip

解壓縮之後開啟 “SQBConverterGUI.exe
SQBConverterGUI Tool to convert Redgate Database Backup file to .BAK

之後選擇要轉換到的格式. E.G. .BAK
選擇檔案
如果有密碼的輸入密碼

SQBConverter GUI
之後按”Convert / 轉換” 便可以
這個程式亦都會報告狀況的
SQB Converter report progress

等一會..如無意外便會完成

SQB Converter Conversion completed
完成後 便會看到很多的 _00.bak _01.bak.. _13.bak 檔案
Lots of .bak files

Hope you find it useful

Syntax error in MySQL Using LIKE in stored Procedure – 在MySQL的 Stored Procedure 上使用Like 出現語句錯誤

今天嘗試在MySQL上寫一個Stored procedure
上面會用到 “LIKE“這一個Operator
這個SQL 是用來查詢 在Table上的 Description field 有沒有和 在Stored Procedure 上 傳送過來 以 這個parameter 開始或結尾的 記錄

SELECT *
FROM localfood_data_tbl
WHERE description LIKE '%'+ var_Description+ '%';

當我儲存這個Stored procedure 時.. 卻出現以下的錯誤
SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ + var_Description +’%’;”
SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' + var_Description +'%';
我十分肯定這個語句在MSSQL上是沒有問題的

當我上網reseach 了一會之後發現..
這是MySQL的 語句問題
如果想把分開的文字串連在一起的話
MSSQL可以使用

SELECT '文字1' + '文字2'

但是在MySQL 上卻需要使用CONCAT 這一個功能
E.G.

SELECT CONCAT('文字1', '文字2')

最後我的SQL 變成了這樣子

SELECT *
FROM localfood_data_tbl
WHERE description LIKE  CONCAT('%', var_Description,'%')

Hope you find it useful