Category Archives: MSSQL Tips and Tricks

Useful SQL command to reduce the size of the database

今日想和大家分享一個 幾有用的TSQL Command, 去Release 返一些SQL Server 佔用的空間
Transaction logDatabase file

-- select database
USE Production;

-- Change the recovery mode to SIMPLE, to clear the transaction log
ALTER DATABASE Production SET RECOVERY SIMPLE ;

-- shrink database to release space
DBCC SHRINKDATABASE (Production, 1);  

Hope you find it useful

SQL Server Reset / Update user password – SQL Server 如何重設/更新使用者密碼?

今日為自己寫一個 SQL notes
去記下如何重設/更新 使用者密碼[你要有足夠的使用者權限才可以的]
(太久沒有用忘記了User密碼)
解決方法:

ALTER LOGIN [SQL User Name] WITH PASSWORD = '[New Password]';  

-- E.G.
ALTER LOGIN sqluser WITH PASSWORD = 'newP@ssW01D';  

hope you find it useful

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

TSQL Get size of all tables in database – TSQL 查詢Table佔用了多小空間

在整理公司的Database 其間發現公司的其中一個Database 的 MDF 檔 799GB 大
之後發現入面有很多用來做Backup的Table
是Developer 有時貪方便
便使用 INSERT INTO z_TableName
來Backup Table 之後便留下了很多的佔有空間的Table 又未必有用 便在這個Database 上

或些有時候有些Table存有很多 舊的Data..又可能不常用
所以希望找一個Query來 查詢在Database上的Table佔有多小空間 和用了多小Row
有多小空間 Provision了 但是沒有用.. 那我們可以考慮使用一些 TSQL CommandReclaim/釋放 那些空間

解決方法十分簡單
我們可以使用這個Query便可以了

SELECT 
    t.NAME AS TableName,
    s.Name AS SchemaName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8/ 1024.00 AS TotalSpaceMB, 
    SUM(a.used_pages) * 8 /1024.00AS UsedSpaceMB, 
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8/1024.00 AS UnusedSpaceMB
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 255 
GROUP BY 
    t.Name, s.Name, p.Rows
ORDER BY 
    t.Name

TSQL Show All space used in Database per table
Hope you find it useful