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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端