SQL SERVER系統或使用者資料庫物件
SQL SERVER系統或使用者資料庫物件都是由物件組成
一、使用者資料庫物件
物件 | 說明 |
資料庫圖表 | 使用圖形方式來顯示關聯表綱要 |
資料表 | 即關聯表(Relations) |
檢視 | 即視界(Views)的虛擬關聯表 |
同義字 | 替本機或遠端伺服器的資料庫物件建立別名 |
可程式性 | 一些可程式化的相關物件 |
儲存體 | 全文檢索目錄、資料分割配置和函數等相關物件 |
安全性 | 安全性管理的相關物件 |
1、同義字
請先往下參考「連結的伺服器」的範例再來學習如何使用「同義字」功能會比較有感覺
由於每次查詢都要輸入一大串名稱,所以想使用同義字功能來幫一個名稱取一個別名,
承「連結的伺服器」的範例,我們在ORDER_DB資料庫的Synonyms物件新增一個別名,
如下圖第一部份為指定別名,第二部份為填入原本想被替換的資料表名稱與相關資訊
現在「[27.105.53.188].vip_db.dbo.VIP」名稱同義於「VIP」名稱了。
2、可程式性物件下面又可分
物件 | 說明 |
預存程序 | 將例行、常用和複雜的資料庫操作預先建立Transact-SQL指令敘述集合,這是在資料庫管理系統執行的指令敘述集合,可以簡化相關或重複的資料庫操作 |
函數 | 將一或多個Transact-SQL指令敘述建立成函數,以便能夠重複使用這些函數 |
資料庫觸發程序 | 一種特殊用途的預存程序,屬於主動執行的程序,不像預存程序是使用者執行,它是當資料表操作符合特定條件時,就自動執行觸發程序 |
規則 | 設定與CHECK條件相同功能的檢查條件,同一個規則物件可以套用在多個資料表的不同欄位 |
預設值 | 定義欄位的預設值,同一個預設物件可以套用在多個資料表的不同欄位 |
順序 | SQL Server資料庫物件,可以根據建立順序時指定的開始值、增量和結束值來產生數值序列,即流水號 |
「規則」與「預設值」物件在SQL Server 2008就已經不建議使用,
SQL Server2014仍然看的到,也只是為了與舊版SQL Server相容。
3、安全性
物件 | 說明 |
使用者 | 資料庫的使用者,即允許存取資料庫的使用者清單 |
角色 | 角色是將使用資料庫的權限以扮演的角色來進行分類,我們可以直接使用角色快速指定使用者的權限 |
結構描述 | 結構描述(Schema)可以替資料庫物件新增分類名稱,換句話說,SQL Server資料庫物件名稱的全名是「結構描述.物件名稱」 |
非對稱金鑰 | 資料加密建立的非對稱金鑰 |
憑證 | 資料加密建立的憑證 |
對稱金鑰 | 資料加密建立的對稱金鑰 |
二、系統資料庫物件
1、連結的伺服器
此功能主要可以讓你存取遠端伺服器的資料,接下來就來看如何操作
(1)先準備測試環境
被連結的伺服器IP:27.105.53.188
被連結的資料表
CREATE TABLE VIP ( name NVARCHAR(10) NOT NULL, level CHAR(8), PRIMARY KEY (name) ) go INSERT [VIP] VALUES ('Bill','金級會員'); INSERT [VIP] VALUES ('Mary','商業會員');
本機裡的資料表
CREATE TABLE [ORDER] ( no INT NOT NULL, name [NVARCHAR](10) NOT NULL, year SMALLINT NOT NULL, quarter TINYINT NOT NULL, item [NVARCHAR](10) NOT NULL, price [INT] NOT NULL, amount [INT] NOT NULL, PRIMARY KEY (no) ) go INSERT [ORDER] VALUES (1,'Bill',2005,1,'CPU',3000,1); INSERT [ORDER] VALUES (2,'Bill',2005,2,'RAM',2000,4); INSERT [ORDER] VALUES (3,'Bill',2006,4,'MB',2000,1); INSERT [ORDER] VALUES (4,'Mary',2010,1,'SSD',2500,5); INSERT [ORDER] VALUES (5,'Mary',2010,1,'LCD',6700,1); INSERT [ORDER] VALUES (6,'Bryan',2015,1,'KB',500,2); INSERT [ORDER] VALUES (7,'Bryan',2015,3,'ROUTER',1500,2); INSERT [ORDER] VALUES (8,'Tim',2016,1,'CPU',12000,1); INSERT [ORDER] VALUES (9,'Tim',2016,4,'MB',5000,1);
(1)、於「Linked Server」按右鍵新增一個連結伺服器
(2)、當然也可以連結其他形態的伺服器,但現在我們以連結遠端伺服器為例子
(3)、設定登入遠端資料庫伺服器的安全性
SQL SERVER對遠端資料庫伺服器的安全性處理,可分為以下兩大類
a、本機伺服器登入與遠端伺服器登入對應
在SQL SERVER中的帳號稱為「登入」(login),
此處可以加入本機「登入」對應到遠端伺服器另一個「登入」的對應關係。
例如上圖中上半部說明
(a)、「本機登入」為dale對應到「遠端使用者」andy及密碼為****:
也就是當本機使用dale帳號登入時,即可同時利用遠端的andy帳號及密碼登入至遠端伺服器。
(b)、若是勾選其中的「模擬」選項,則會用本機的「登入」和「密碼」模擬成遠端的使用者和密碼來進行登入;
所以右側的「遠端使用者」如「遠端密碼」就不用且不能輸入。
因此要使用「模擬」的方式,必須本機和遠端必須都有相同的「登入」以 及相同的「密碼」才行。例如圖中的andy。
b、如果不是上述清單所定義的登入,可將連結設定為:
(a)、「不建立」,表示未列於上方對應清單中的「登入」皆不得存取遠端伺服器。
(b)、「不使用安全性內容建立」,表示未列於上方對應清單中的「登入」,
皆不使用安全性內容存取遠端伺服器,因此僅可以存取未設安全性控制的資料庫,例如:Access。
(c)、「使用登入的目前安全性內容建立」,表示未列於上方對應清單中的「登入」,
皆會嘗試以本機的登入和密碼來登入遠端伺服器。
倘若遠端伺服器內沒有相同的登入與密碼,則無法進行存取。
(d)、「使用此安全性內容建立」,直接透過所輸入的「遠端登入」和「指定密碼」
來存取遠端伺服器;也就是說,直接使用遠端的帳號與密碼來登入。
此例我們直接使用遠端的帳號與密碼來登入。
下面為已設定好的應用結果。
SELECT no,name,year,quarter,item,price,amount FROM [ORDER] SELECT name,level FROM [27.105.53.188].vip_db.dbo.VIP SELECT * FROM [ORDER] WHERE NAME IN(SELECT NAME FROM [27.105.53.188].vip_db.dbo.VIP)