MSSQL 雜記

2024-03-13 工作雜記 MSSQL

查詢執行很久的SQL

SELECT TOP 10
  [總執行時間()]  =CAST(a.total_elapsed_time / 1000000.0 AS DECIMAL(16, 2))  
, [執行次數]    =a.execution_count
, [平均執行時間()] =CAST(a.total_elapsed_time / 1000000.0 / a.execution_count AS DECIMAL(16, 2)) 
, [SQL指令]    =SUBSTRING (b.text,(a.statement_start_offset/2) + 1,500) 
FROM sys.dm_exec_query_stats a CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) as b
WHERE a.total_elapsed_time > 0 AND B.[text] NOT LIKE '%SCHEMA_NAME%'--去除一些系統的SQL指令
ORDER BY [平均執行時間()] DESC

查詢資料庫版本

SELECT @@VERSION AS 'SQL Server Version Details'
  • 查詢結果
Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 
	Feb 20 2014 20:04:26 
	Copyright (c) Microsoft Corporation
	Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)

權限認識

MS SQL 伺服器角色

Data type mapping for other data types:

固定伺服器層級角色 描述
sysadmin sysadmin 固定伺服器角色的成員可以執行伺服器中的所有活動。
serveradmin serveradmin 固定伺服器角色的成員可以變更全伺服器組態選項及關閉伺服器。
securityadmin securityadmin 固定伺服器角色的成員可以管理登入及其屬性。 他們可以 GRANT (授與)、DENY (拒絕) 和 REVOKE (撤銷) 伺服器層級權限。 如果他們擁有資料庫的存取權,也可以 GRANT、DENY 和 REVOKE 資料庫層級權限。 此外,他們可以重設SQL Server登入的密碼。 重要: 授與 Database Engine 存取權並設定使用者權限的能力,可讓安全性系統管理員指派大部分的伺服器許可權。 您應該將 securityadmin 角色視為相當於 系統管理員 角色。
processadmin processadmin固定伺服器角色的成員可以結束SQL Server實例中執行的進程。
setupadmin setupadmin固定伺服器角色的成員可以使用 Transact-SQL 語句來新增和移除連結的伺服器。 使用 Management Studio.) 時,需要 (系統管理員 成員資格
bulkadmin bulkadmin 固定伺服器角色的成員可以執行 BULK INSERT 陳述式。 Linux 上的 SQL Server不支援bulkadmin角色或 ADMINISTER BULK OPERATIONS 許可權。 只有系統管理員可以針對Linux 上的 SQL Server執行大量插入。
diskadmin diskadmin 固定伺服器角色是用來管理磁碟檔案。
dbcreator dbcreator 固定伺服器角色的成員可以建立、改變、卸除及還原任何資料庫。
public 每個SQL Server登入都屬於公用伺服器角色。 當伺服器主體尚未授與或拒絕安全性實體物件上的特定許可權時,使用者會繼承該物件上授與 公用 的許可權。 只有當您想要將任何物件提供給所有使用者使用時,才指派該物件的 public 權限。 您無法變更公用中的成員資格。注意:public 的實作方式不同於其他角色,您可以授與、拒絕或撤銷 public 固定伺服器角色的權限。

資料型態

SQL Server Datetime vs Datetime2

Feature Datetime Datetime2
Syntax datetime datetime2(n)
Where n represents fractional seconds precision
Format YYYY-MM-DD hh-mm-ss.nnn YYYY-MM-DD hh-mm-ss.nnnnnnn
Date Range 1753-01-01 To 9999-12-31 0001-01-01 To 9999-12-31
Time Range 00:00:00 To 23:59:59.997 00:00:00 To 23:59:59.9999999
Default Value 1900-01-01 00:00:00 1900-01-01 00:00:00
Accuracy Rounded to increments of .000, .003, or .007 seconds .0000001 seconds (100 nanoseconds )
ANSI SQL Compliant No SQL Standards and is ISO Compliant (ISO 8601)
Time zone offset No No
Character Length 19 positions minimum &
23 maximum 19 positions minimum &
27
Storage Size 8 bytes 6 to 8 bytes, depending on the precision*
User-Defined Precision No Yes
Usage DECLARE @DateTime datetime CREATE TABLE table_name ( Column1 datetime ) DECLARE @DateTime2 datetime2(7) CREATE TABLE table_name ( Column1 datetime2(7) )

參考資料