16
2023
05
22:38:03

sql server 常见问题笔记 查看所有数据库数据文件路径 select*frommaster.sys.master_files

1、关于复制类型  

快照发布:
发布服务器按预定的时间间隔向订阅服务器发送已发布数据的快照。

事务发布:
在订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。

对等发布:
对等发布支持多主复制。发布服务器将事务流式传输到拓扑中的所有对等方。所有对等节点可以读取和写入更改,且所有更改将传播到拓扑中的所有节点。

合并发布:
在订阅服务器收到已发布数据的初始快照后,发布服务器和订阅服务器可以独立更新已发布数据。更改会定期合并。Microsoft SQL Server Compact Edition 只能订阅合并发布。

2、数据库服务器安装sql server后修改机器名导致发布失败解决方法

-- 检查SQL Server中的“服务器名[/命名实例名]”, 和当前真实的“计算机名[/命名实例名]”。如果修改了计算机名,则这两者即会不一致。

select @@serverName,  serverproperty('serverName')

-- 将"服务器名", 修改为正确的计算机名
EXEC sp_dropserver '服务器名[/命名实例名]';           -- 即旧的计算机名
GO
EXEC sp_addserver '计算机名[/命名实例名]', 'local'; -- 即新的计算机名

go

-- 重启SQL Server

3、判断无用的索引

  1. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

  2. SELECT TOP 30

  3.        DB_NAME() AS DatabaseName ,

  4.        '[' + SCHEMA_NAME(o.Schema_ID) + ']' + '.' + '['

  5.        + OBJECT_NAME(s.[object_id]) + ']' AS TableName ,

  6.        i.name AS IndexName ,

  7.        i.type AS IndexType ,

  8.        s.user_updates ,

  9.        s.system_seeks + s.system_scans + s.system_lookups AS [System_usage]

  10. FROM    sys.dm_db_index_usage_stats s

  11.        INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]

  12.                                    AND s.index_id = i.index_id

  13.        INNER JOIN sys.objects o ON i.object_id = O.object_id

  14. WHERE   s.database_id = DB_ID()

  15.        AND OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0

  16.        AND s.user_seeks = 0

  17.        AND s.user_scans = 0

  18.        AND s.user_lookups = 0

  19.        AND i.name IS NOT NULL

  20. ORDER BY s.user_updates DESC  

4、判断 哪些索引缺失

  1. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

  2. SELECT TOP 30

  3.         ROUND(s.avg_total_user_cost * s.avg_user_impact * ( s.user_seeks

  4.                                                             + s.user_scans ),

  5.               0) AS [Total Cost] ,

  6.         s.avg_total_user_cost * ( s.avg_user_impact / 100.0 ) * ( s.user_seeks

  7.                                                               + s.user_scans ) AS Improvement_Measure ,

  8.         DB_NAME() AS DatabaseName ,

  9.         d.[statement] AS [Table Name] ,

  10.         equality_columns ,

  11.         inequality_columns ,

  12.         included_columns

  13. FROM    sys.dm_db_missing_index_groups g

  14.         INNER JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle

  15.         INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handle

  16. WHERE   s.avg_total_user_cost * ( s.avg_user_impact / 100.0 ) * ( s.user_seeks

  17.                                                               + s.user_scans ) > 10

  18. ORDER BY [Total Cost] DESC ,

  19.         s.avg_total_user_cost * s.avg_user_impact * ( s.user_seeks

  20.                                                       + s.user_scans ) DESC



5、看看那些索引维护成本很高 通俗的说就是更新次数大于使用这个索引的次数

  1. SELECT TOP 20

  2.         DB_NAME() AS DatabaseName ,

  3.         '[' + SCHEMA_NAME(o.Schema_ID) + ']' + '.' + '['

  4.         + OBJECT_NAME(s.[object_id]) + ']' AS TableName ,

  5.         i.name AS IndexName ,

  6.         i.type AS IndexType ,

  7.         ( s.user_updates ) AS update_usage ,

  8.         ( s.user_seeks + s.user_scans + s.user_lookups ) AS retrieval_usage ,

  9.         ( s.user_updates ) - ( s.user_seeks + user_scans + s.user_lookups ) AS maintenance_cost ,

  10.         s.system_seeks + s.system_scans + s.system_lookups AS system_usage ,

  11.         s.last_user_seek ,

  12.         s.last_user_scan ,

  13.         s.last_user_lookup

  14. FROM    sys.dm_db_index_usage_stats s

  15.         INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]

  16.                                     AND s.index_id = i.index_id

  17.         INNER JOIN sys.objects o ON i.object_id = O.object_id

  18. WHERE   s.database_id = DB_ID('{0}')

  19.         AND i.name IS NOT NULL

  20.         AND OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0

  21.         AND ( s.user_seeks + s.user_scans + s.user_lookups ) > 0

  22. ORDER BY maintenance_cost DESC  

6、常常使用的索引查看 看看你常用使用的索引是否建立的合理

  1. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

  2. SELECT TOP 20

  3. DB_NAME() AS DatabaseName

  4. , '['+SCHEMA_NAME(o.Schema_ID)+']'+'.'+'['+OBJECT_NAME(s.[object_id]) +']'AS TableName

  5. , i.name AS IndexName

  6. , i.type as IndexType

  7. , (s.user_seeks + s.user_scans + s.user_lookups) AS Usage

  8. , s.user_updates

  9. FROM sys.dm_db_index_usage_stats s

  10. INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]

  11. AND s.index_id = i.index_id

  12. INNER JOIN sys.objects o ON i.object_id = O.object_id

  13. WHERE s.database_id = DB_ID()

  14. AND i.name IS NOT NULL

  15. AND OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0

  16. ORDER BY Usage DESC