SQLServer 常用命令整理

参考地址
https://www.cnblogs.com/OliverQin/p/5032014.html

shell是用户与操作系统对话的一个接口,通过shell告诉操作系统让系统执行我们的指令

xp_cmdshell在sqlserver中默认是关闭的存在安全隐患。

--打开xp_cmdshell
 EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
--关闭xp_cmdshell
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;

以下是跟xp_cmdshell有关的小例子。

1.显示C盘下的内容,这个比较简单

 exec xp_cmdshell 'dir c:\'  

 #查看SQLServer版本

     SELECT @@VERSION;

更改文件路径

官网地址:https://docs.microsoft.com/zh-cn/sql/relational-databases/databases/move-user-databases?viewFallbackFrom=sql-server-2014&view=sql-server-ver15

--设置文件路径
ALTER DATABASE AdventureWorks2017 MODIFY FILE ( NAME = 'AdventureWorks2017', FILENAME = 'D:\DATA\AdventureWorks2017.mdf' );  
ALTER DATABASE AdventureWorks2017 MODIFY FILE ( NAME = 'AdventureWorks2017_log', FILENAME = 'D:\DATA\AdventureWorks2017_log.ldf' );  
--设置离线
ALTER DATABASE AdventureWorks2017 SET OFFLINE;  
--设置在线
ALTER DATABASE AdventureWorks2017 SET ONLINE;  
复制代码
#查看日志空间
dbcc sqlperf(logspace)
#查看日志信息 dbcc loginfo(
'WSS_Content_443_006') --Status 为2 表示还不可以释放 #查看日志无法收缩的原因 SELECT name,log_reuse_wait_desc FROM sys.databases where name='DBname' #查看正在使用的事务 DBCC OPENTRAN(WSS_Content_443_006) CHECKPOIN --采用将正在使用的VLF通过发生check point写入到日志文件
复制代码

 AlwaysOn 可用性组

 副本之间的数据移动可以是同步的或异步的,Enterprise 版本允许同步多达三个副本(包括主要副本)

Standard 版本中的可用性组(称为 Basic 可用性组)支持两个副本(一个主要副本和一个次要副本),且可用性组中只有一个数据库。 Enterprise 版本不仅允许在一个可用性组中配置多个数据库,而

 

SQLServer的日期起始

SET DATEFIRST 1    --以星期一作为每周的起点
SELECT @@DATEFIRST

declare @da datetime='2022-07-31'  select DATEPART(week,@da)  返回31  如果周日是起点 则返回32  或者直接select DATEPART(isoweek,@da) 返回31

 备份情况查询 在msdb数据库中

SELECT b.backup_finish_date,a.physical_device_name,b.[database_name]
FROM dbo.backupmediafamily a INNER JOIN dbo.backupset b
ON a.media_set_id=b.media_set_id
ORDER BY 1 desc;

 删除指定数据库的备份记录

EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'SQLTestDB'

 数据库正在还原或单个用户锁定

RESTORE database DBName with recovery 
单个用户切换: ALTER DATABASE [IMXERP_TEST]SET MULTI_USER

 #查看数据库中 表Table 的使用情况

复制代码
SELECT
    t.NAME AS TableName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB,
    CAST(ROUND((SUM(a.total_pages) * 8.00 / 1024), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
    CAST(ROUND((SUM(a.total_pages) * 8.00 / 1024 / p.rows), 2) AS NUMERIC(36, 2)) AS AverageRowSpaceKB
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
WHERE t.NAME NOT LIKE 'dt%' AND t.is_ms_shipped = 0 AND i.OBJECT_ID > 255
GROUP BY t.NAME, p.Rows
order by t.name
复制代码

#查看每个库Database 的信息

SELECT 
DB_NAME(database_id) AS [Database Name],[type_desc],
[Name] AS [Logical Name],
[Physical_Name] AS [Physical Name],
((size * 8) / 1024) AS [Size(MB)],
[differential_base_time] AS [Differential Base Time]
FROM sys.master_files

 

posted @   港城大白鲨  阅读(526)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示