SQLServer 常用命令记录,持续更新.....(有问题可以留言)
SqlServer 单用户解决方案
USE master; GO DECLARE @SQL VARCHAR(MAX); SET @SQL='' SELECT @SQL=@SQL+'; KILL '+RTRIM(SPID) - FROM master..sysprocesses WHERE dbid=DB_ID('数据库名');
EXEC(@SQL); ALTER DATABASE 数据库名 SET MULTI_USER;
SqlServer单表备份方案
BCP(Bulk Copy Program)是SQL Server提供的实用程序,可以用来将数据导出到文件或从文件导入到数据库。以下是使用BCP备份单个表的步骤:
备份命令
bcp [数据库名].[架构].[表名] out D:\xxx.bcp -T -c
恢复命令:
bcp [数据库名].[架构].[表名] in D:\xxx.bcp -T -c
SqlServer中json字段的操作
在SQL Server中,您可以使用内置的JSON功能来操作JSON数据。SQL Server 2016及更高版本引入了对JSON的原生支持。以下是一些常见的JSON操作:
JSON数据的查询:
- 使用
JSON_VALUE
函数来提取JSON对象中的特定属性值。 - 使用
JSON_QUERY
函数来提取JSON对象或数组。 - 使用
JSON_UNQUOTE
函数来删除JSON字符串的引号。
DECLARE @json NVARCHAR(MAX) = '{"name": "John", "age": 30}' SELECT JSON_VALUE(@json, '$.name') AS Name -- 输出:Name SELECT JSON_QUERY(@json, '$.name') AS Name -- 输出:"John" SELECT JSON_UNQUOTE(JSON_VALUE(@json, '$.name')) AS Name -- 输出:John
Json数据替换
declare @ExtraProperties varchar(2000)='{"test":"FirstAndLastMarking"}' SET @ExtraProperties=REPLACE(@ExtraProperties, 'FirstAndLastMarking', 'BeginEndMark') select @ExtraProperties ; --输出:'{"test":"BeginEndMark"}'
JSON数组的操作:
- 使用
OPENJSON
函数来解析JSON数组,以便查询和操作数组中的元素。
DECLARE @jsonArray NVARCHAR(MAX) = '[{"name": "John", "age": 30}, {"name": "Jane", "age": 25}]' SELECT * FROM OPENJSON(@jsonArray) WITH (Name NVARCHAR(50), Age INT) -- 输出:两行结果,每行包含Name和Age列
JSON数据的修改:
- 使用
JSON_MODIFY
函数来更新JSON对象中的属性值。
DECLARE @jsonObj NVARCHAR(MAX) = '{"name": "John", "age": 30}' SET @jsonObj = JSON_MODIFY(@jsonObj, '$.age', 31) -- 更新age属性的值为31
JSON数据的构建:
- 使用
FOR JSON
子句将查询结果转换为JSON格式。
SELECT FirstName, LastName FROM Employees FOR JSON AUTO
JSON路径表达式:
- 使用JSON路径表达式来定位JSON数据中的特定元素。
DECLARE @json NVARCHAR(MAX) = '{"info": {"address": {"city": "New York"}}}' SELECT JSON_VALUE(@json, '$.info.address.city') AS City -- 输出:New York
.Net 通过EFCore.Tools生成对应数据库操作脚手架
//EfCore 6.0 Scaffold-DbContext "server=xxx.xxx.xxx.xx;database=xxx;user id=sa;password=pwd.; " Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -F -ContextDir DBContext -ContextNamespace DBContext -UseDatabaseNames -Context SQLServerContext //EfCore7.0 由于加入了证书验证,如果没有证书需要加上 Encrypt=False Scaffold-DbContext "server=xxx.xxx.xxx.xx;database=xxx;user id=sa;password=pwd.; Encrypt=False" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -F -ContextDir DBContext -ContextNamespace DBContext -UseDatabaseNames -Context SQLServerContext