Linux系統sql server數據庫常用操作
廣告:
數據庫操作請參考官網:
https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-detach-db-transact-sql?view=sql-server-ver15
連接數據庫:sqlcmd -S localhost -U SA -P '12345678'
1 獲取數據庫獨占權限:
USE master;
ALTER DATABASE newspaper SET SINGLE_USER;
go (后面不能有分號)
2 分離數據庫(備份)
下面的示例將 newspaper 數據庫與設置為 true 的skipchecks分離。
EXEC sp_detach_db 'newspaper', 'true';
查詢有哪些數據庫:SELECT Name from sys.Databases
以下示例將分離 newspaper 數據庫,并保留全文索引文件和全文索引的元數據。 此命令將運行 UPDATE STATISTICS,這是默認行為。
exec sp_detach_db @dbname='newspaper'
, @keepfulltextindexfile='true';
3 查看支持哪些排序規則
SELECT Name from sys.fn_helpcollations() where Name like '%Chinese%'
SELECT Name from sys.fn_helpcollations()
select SERVERPROPERTY('Collation') --查看默認排序規則 SQL_Latin1_General_CP1_CI_AS Chinese_PRC_CI_AS
select SERVERPROPERTY('SqlCharSetName')--查看排序使用字符集名稱 iso_1
select COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage') --查看默認編碼格式 936
CI 指定不區分大小寫,CS 指定區分大小寫
中文:Chinese_PRC_CI_AS
4 更改排序規則:
sudo /opt/mssql/bin/mssql-conf set-collation
5. 更改單個數據庫排序規則
解決方法:
a.設置數據庫的 Ristrict Access 為 SINGLE_USER.
b.執行下列語句更改排序規則
USE master
GO
ALTER DATABASE newspaper COLLATE Chinese_PRC_CI_AS
ALTER DATABASE newspaper COLLATE SQL_Latin1_General_CP1_CI_AS
GO
c.上述命令執行成功之后設置Ristrict Access 為 MULTI_USER.
ALTER DATABASE newspaper set MULTI_USER
6. 還原數據庫
附加數據庫
CREATE DATABASE newspaper
ON (FILENAME = '/var/opt/mssql/data/newspaper.mdf'),
(FILENAME = '/var/opt/mssql/data/newspaper_log.ldf')
FOR ATTACH;
還原備份文件:
RESTORE DATABASE newspaper FROM DISK = '/var/opt/mssql/data/20191125905.bak' WITH RECOVERY;
7. 重啟sql server服務
sudo systemctl restart mssql-server
8. 關閉客戶反饋
sudo /opt/mssql/bin/mssql-conf set telemetry.customerfeedback false
9. 將目錄的所有者和組更改為 mssql 用戶 :
sudo chown mssql /var/opt/mssql/data/master.mdf
sudo chgrp mssql /var/opt/mssql/data/master.mdf
sudo chown mssql /tmp/masterdatabasedir
sudo chgrp mssql /tmp/masterdatabasedir
10. 修改自增步長自長跳1000
修改/usr/lib/systemd/system/mssql-server.service 文件
ExecStart=/opt/mssql/bin/sqlservr -T272
systemctl daemon-reload
常見錯誤:
1. Error 5(Access is denied.) occurred while opening file '/var/opt/mssql/data/master.mdf' to obtain configuration information at startup. An invalid startup option might have caused the error. Verify your startup options, and correct or remove them if necessary.
更改文件夾權限
2 . Sql server用存儲過程處理中文出現亂碼 like N'%中文%' 或者like搜索沒有結果:
存儲過程里面改成: insert into test (a)values(N''+@title+'')
存儲過程里面定義變量:
@strWhere nvarchar(4000) = '', -- 查詢條件 (注意: 不要加 where)
declare @strSQL nvarchar(4000) -- 主語句
exec ( @strSQL) 主語句也要是nvarchar
程序里面改成:strWhere = strWhere + " and b.title like N'%" + keyword + "%' ";
廣告: