是否一直對SQL Server 2005里的用戶的概念不是很清楚,認為下面的兩個用戶是一個概念,那就有必要點上一根煙,喝上一品茶,細細品味一下這之間的不同了。
左邊的圖標出了一個可以訪問AdventureWorks數(shù)據(jù)庫的用戶,而右邊的圖則標出了整個數(shù)據(jù)庫服務(wù)器所有的“用戶”。
大家知道,SQL Server 2005有兩種用戶的認證方式: Windows和Windows與SQL的混合認證。 對于Windows認證大家應(yīng)該比較熟悉, 在這里不多說了。 只強調(diào)一點,如果能用Windows認證就盡量用,因為相對SQL認證,Windows認證還是會更安全一些。所以它也是SQL SERVER 2005的默認方式。下面主要是談一下SQL認證中用戶的一些問題。
當采用SQL認證進行開發(fā)的時候,我們經(jīng)常會準備一個數(shù)據(jù)庫連接串:
Data Source=ServerName; Initial Catalog=DatabaseName; User ID=Pumpkin; Password=!@#$%^&*
注意這里的Pumpkin,以前我一直都以為這就是SQL SERVER里的用戶,但是通過搞一搞之后才發(fā)現(xiàn)并非如此。 數(shù)據(jù)庫連接串里的Pumpkin,在SQL SERVER里嚴格的說,應(yīng)該叫Login,其實它是一個登錄帳號,并不是數(shù)據(jù)庫里用來訪問表和操作數(shù)據(jù)的一個用戶。即右圖中的Pumpkin。它在數(shù)據(jù)服務(wù)器的Security"Logins的結(jié)點下,這里面列出來的是所有的登錄帳號。它們的作用就是用來連接數(shù)據(jù)庫并通過驗證。
有了這個帳號之后,其實我們除了登錄進來之外,其它還是什么都做不了。如果想要訪問數(shù)據(jù)庫服務(wù)器中的某個數(shù)據(jù)庫的數(shù)據(jù),還要建立一個USER并給它一個訪問數(shù)據(jù)表的權(quán)限。而這個用戶則是左圖中的那個Pumpkin。
請注意,我們剛看出了關(guān)鍵的問題所在:訪問表的用戶其實必須是USER Pumpkin,不是那個LOGIN Pumpkin。所以說,在SQL SERVER 2005中,如果要訪問某張表,那首先需要建立一個USER,并賦給它訪問的權(quán)限。同時,要注意USER與LOGIN的關(guān)系是一對一的,即某個USER 在一定時間內(nèi)只對應(yīng)著唯一一個LOGIN。
如果大家還是很困惑,那就來看一看如何時用SQL語句來創(chuàng)建這些用戶的:
◆創(chuàng)建一個Login
Code |
◆創(chuàng)建一個User
Code |
從SQL中應(yīng)該可以看得很清楚,用戶其實基于登錄帳號創(chuàng)建的。我們雙擊右圖的Pumpkin,就可以看到它們的關(guān)系了。