MSSQL 操作

參考資料: (http://bmws010.ugear.tw/News/ugC_News_Detail.asp?hidNewsID=30)

新增資料庫 選2048MB (2G) 還原資料庫

要拿來還原的 .bak檔 要放在D槽最底下(或C槽)

記得要去選項的地方,勾選

覆蓋現有的資料庫

清空資料表

TRUNCATE TABLE 表格名稱;

執行預存程序

exec 預存程序名稱 輸入參數

檢驗參數

print (@index) 某個變數,或是想要輸出的值

註解

--select * from table

預存程序 參數

要先設定該變數的大小為何,不然有可能會傳不進去,就會導致該參數一直為預設值

已經CREATE預存程序,但是ALTER說無效物件

參考資料:(https://social.technet.microsoft.com/Forums/zh-TW/b40b0580-8221-4f15-af78-1d356a288157/store-procedure-?forum=sqlservermanagementzhcht)

Vw 檢視

CREATE view [dbo].[ViewName] as
SELECT     A.ID, A.Password 
FROM         dbo.table1 AS A

GO

注意:建View時,不能加order by

MSSQL遠端問題 ERROR:40

參考資料:(https://stackoverflow.com/questions/9945409/how-do-i-fix-the-error-named-pipes-provider-error-40-could-not-open-a-connec)

參考資料:(http://fecbob.pixnet.net/blog/post/39058979-%E8%A7%A3%E6%B1%BAsql-server%E7%AE%A1%E7%90%86%E5%99%A8%E7%84%A1%E6%B3%95%E9%80%A3%E6%8E%A5%E9%81%A0%E7%AB%AF%E8%B3%87%E6%96%99%E5%BA%AB%E7%9A%84%E5%95%8F)

將資料庫的主機防火牆打開1433port

流程: 防火牆>輸入規則>新增規則 選擇要開port的,輸入1433,設定你想要的命名

就排除問題囉!

遇到交易紀錄已滿

ERROR MESSAGE

資料庫 'DB_NAME' 的交易記錄已滿。如果要了解為何無法重複使用記錄中的空間,請參閱 sys.databases 中的 log_reuse_wait_desc 資料行。

USE [DB_NAME];
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE [DB_NAME]
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE ([DB_Log_File_Name], 1);
GO
-- Reset the database recovery model.
ALTER DATABASE [DB_NAME]
SET RECOVERY FULL;
GO

如果遇到有做鏡像的資料庫

先把鏡像的停掉 將主要的LOG壓縮 將主要的資料庫備份 還原到鏡像的資料庫 啟動還原的資料庫

[DB_Log_File_Name] 不是檔案名稱,是邏輯名稱!!

[DB_Log_File_Name] 不是檔案名稱,是邏輯名稱!!

[DB_Log_File_Name] 不是檔案名稱,是邏輯名稱!!

如何看邏輯名稱? 所選資料庫 右鍵[屬性]>選取[檔案]頁面 看要壓縮的檔案名稱的邏輯名稱為何。

將資料庫設定為單一使用者模式

參考資料:(https://docs.microsoft.com/zh-tw/sql/relational-databases/databases/set-a-database-to-single-user-mode?view=sql-server-2017)

USE master;
GO
ALTER DATABASE [DB_Name]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

將資料庫設定為唯獨

ALTER DATABASE [DB_Name]
SET READ_ONLY;
GO

將資料庫設定為多人存取模式

ALTER DATABASE [DB_Name]
SET MULTI_USER;
GO

變更資料庫定序

參考資料:(https://docs.microsoft.com/zh-tw/sql/relational-databases/collations/set-or-change-the-database-collation?view=sql-server-2017)

USE master;  
GO  
ALTER DATABASE MyOptionsTest  
COLLATE French_CI_AS ;  
GO

比較差集

參考資料:(https://dotblogs.com.tw/rainmaker/2010/12/06/19940)

列出 table1 有的,table2 沒有的

select ID
from table1 
except
select ID
from table2

SQL Server獨佔連線後踢掉的方法

參考資料:(https://catchtest.pixnet.net/blog/post/30940441-sql-server%E7%8D%A8%E4%BD%94%E9%80%A3%E7%B7%9A%E5%BE%8C%E8%B8%A2%E6%8E%89%E7%9A%84%E6%96%B9%E6%B3%95)

在SQL Server要修改DB參數或復原時,常常會因為DB有其他連線使用而出現 「資料庫無法獨佔鎖定來執行此作業。」的錯誤訊息 為此必須使用SET SINGLE_USER的指令來踢掉其他連線再處理

不過最近遇到踢掉他人後連線卡在上面,任何操作都表示連線已被人獨占而無法執行

不用擔心,SQL Server是可以把目前連線給踢掉的...只要你有sa權限

--踢掉其他連線的語法
USE master;
GO
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
--查詢目前連線的語法
USE master;
GO
exec sp_who

不允許儲存變更

參考資料:(https://support.microsoft.com/zh-tw/help/956176/error-message-when-you-try-to-save-a-table-in-sql-server-saving-change)

參考資料:(https://byron0920.pixnet.net/blog/post/85624016)

登入時使用非1433 Port

-- http://ip:port   but  SSMS  ip,port
ip,port
pass

Last updated