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-- 输出:NameSELECT 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, LastNameFROM EmployeesFOR 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=FalseScaffold-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