首先理解什麼是登錄,什麼是用戶,什麼是角色:
登錄:SQL Server2005中,有兩種創建登錄的方式:一種是Windows驗證登錄;另一種是SQL Server身份驗證方式。「登錄方式」就好比辦公樓上使用不同類型的鎖,一旦選擇了使用什麼類型的鎖,就可以開始為每位員工配發鑰匙,而這個鑰匙就是「登錄」。或稱「登錄名」,但員工只有進入大樓的權利,但卻沒有許可權查看和使用裡面的資源(比如檔案櫃)。如果是sysadmin或securityadmin固定伺服器角色的成員,則可以創建兩種類型的登錄之一:標准登錄(比如前面比喻中的金屬鑰匙)和Windows登錄(比如較新型的電子出入卡)。
用戶:既然員工擁有了進入大樓的鑰匙,就應該擁有適當的管理性訪問權,他們需要通過訪問其他資源來完成工作。例如,如果打算允許財務部訪問賬目文件,就需要給他們一把文件櫃的鑰匙。員工現在有兩把鑰匙:一把是打開大門的鑰匙,一把是打開文件櫃的鑰匙。
同樣,一旦用戶已登錄到了SQL Server上,就需要允許用戶訪問資料庫。為此,需要創建資料庫用戶賬戶,然後給這些用戶賬戶授予許可權。一旦這個過程結束,SQL Server用戶就擁有了多把鑰匙:一把打開大門的鑰匙(登錄),以及一把打開他們需要訪問的每個文件櫃(資料庫)的鑰匙。
角色:會計需要簽發公司支票,這個許可權可以用兩種方式之一來授予。第一,可以給每名會計分別提供一本從同一賬戶中支取的支票簿,並授予從該支票簿中開支票的許可權。在這種情況下,需要設法跟蹤當月已經開出的全部支票,否則這種方法可能會造成可怕的後果。完成這項工作的最佳方法是讓整個公司賬戶只使用一本支票簿,並給所有會計授予從這本支票簿中開支票的一個組許可權。
在SQL Server中,當幾個用戶需要訪問資料庫的許可權時,比較容易的方法是將所有的許可權作為一個組授給他們,而不是設法分別管理每個用戶。
言歸正傳,先用存儲過程實現以上操作:
創建新登錄具體語法請參考MSDN文檔
--創建一個簡單的登錄,登錄名為:newlogin;登錄密碼:123456;默認資料庫:master,默認資料庫也可以不指定。
EXEC sp_addlogin 'newlogin','123456','master'
--創建用戶
--創建一個簡單的用戶,如果不指定用戶名,則添加到當前資料庫登錄名中,如果不指定角色,則該用戶默認屬於public角色。下為添加newlogin登錄名。
EXEC sp_adser 'newlogin'
--創建一個帶用戶名的用戶,用戶可以與登錄名相同(同上一種類似),也可以不同,但要設定當前登錄名,用戶角色可選,默認為public。下為將用戶newuser添加到newlogin登錄名中。
EXEC sp_adser 'newlogin','newuser'
--創建角色
EXEC sp_addrole 'newrole'
--下為將用戶下為將用戶newuser添加到newlogin登錄名中。並指定newrole角色。
EXEC sp_adser 'newlogin','newuser','newrole'
--為角色newrole賦予jobs表的所有許可權
GRANT ALL ON jobs TO newrole
--為角色newrole賦予sales表的查、改許可權
GRANT SELECT,UPDATE ON sales TO newrole
--禁止角色newrole使用employees表的插入許可權
DENY INSERT ON employees TO newrole
另一種創建用戶和賦予角色的方式
--為登錄newlogin在資料庫中添加安全賬戶newuser
EXEC sp_grantdbaccess 'newlogin,'newuser'
--添加newuser為角色newrole的成員
EXEC sp_addrolemember 'newrole','newuser'
--資料庫用戶、角色、登錄的刪除操作
--刪除當前資料庫用戶
EXEC sp_revokedbaccess 'newuser';
--刪除資料庫登錄
EXEC sp_droplogin 'newlogin'
--刪除資料庫角色
EXEC sp_droprole 'newrole'
--從資料庫角色(newrole)中刪除用戶(newuser)
EXEC sp_droprolemember 'newrole', 'newuser'
--用SQL代碼新建登錄、用戶
--創建帶密碼的mylogin登錄名,MUST_CHANGE 選項需要用戶首次連接伺服器時更改此密碼。
CREATE LOGIN mylogin WITH PASSWORD = '123456' MUST_CHANGE;
--創建映射到憑據的登錄名。
--以下示例將創建mylogin登錄名。此登錄名將映射到mycredential憑據。
CREATE LOGIN mylogin WITH PASSWORD = '123456',
CREDENTIAL = mycredential;
--從Windows 域帳戶創建登錄名
--如果從Windows 域帳戶映射登錄名,則登錄名必須用方括弧([ ]) 括起來。
CREATE LOGIN [jack/xiangzhao] FROM WINDOWS;
--如果指定用戶名,則不使用默認登錄名作為該資料庫用戶
CREATE USER myuser FOR LOGIN mylogin
--以下示例將創建用戶myuser擁有的資料庫角色myrole
CREATE ROLE myrole AUTHORIZATION myuser;
--以下示例將創建db_role固定資料庫角色擁有的資料庫角色myrole
CREATE ROLE myrole AUTHORIZATION db_role;
㈡ oracle資料庫 寫一個用戶登錄注冊的存儲過程, 應該怎麼寫
Oracle存儲過程基本語法:
1
2
3
4
5
CREATE OR REPLACE PROCEDURE 存儲過程名
IS
BEGIN
NULL;
END;
解釋:
行1: CREATE OR REPLACE PROCEDURE 是一個SQL語句通知Oracle資料庫去創建一個叫做skeleton存儲過程, 如果存在就覆蓋它; 行2: IS關鍵詞表明後面將跟隨一個PL/SQL體。 行3: BEGIN關鍵詞表明PL/SQL體的開始。 行4: NULL PL/SQL語句表明什麼事都不做,這句不能刪去,因為PL/SQL體中至少需要有一句; 行5: END關鍵詞表明PL/SQL體的結束。
㈢ 你好 如何用存儲過程 在asp.net寫登錄
只是把語句換成存儲過程名,其他的地方是一樣的。在存儲過程裡面判斷一下登錄信息是否正確,正確的返回1,在asp.net 後台判斷這個返回值即可。。
using (SqlConnection con = new SqlConnection(srcConnString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcere;
cmd.CommandText = "存儲過程名";
cmd.Parameters.Add("@參數名", SqlDbType.VarChar).Value = "參數值";
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
if (dr["result"].ToString() == "1")
{
//這里寫你的登錄操作
}}}}
㈣ 求ASP.NET極為簡單代碼:如何用存儲過程實現登錄的代碼
SqlConnection conn=new SqlConnection("連接字元串");
SqlCommand cmd=new SqlCommand();
cmd.CommandText=checklogin;
cmd.CommandType=CommandType.StoredProcere;
cmd.Connection=conn;
string strName=this.TextBox1.Text;
string strPwd=this.TextBox2.Text;
SqlParameters[] pa={new SqlParameters("@name",strName),new SqlParameters("@pwd",strPwd)};
cmd.Parameters.AddRange(pa);
conn.Open();
DataReader dr=new DataReader(cmd);
if(dr.Read())
{Reponse.Redirect("");}
else
{}
conn.Close();
////////////////不知道對不對,大體流程就這樣,你自己檢測一下吧
㈤ 求高手幫幫忙,沒分了,給不了!麻煩給位了! asp.net (c#)中怎麼利用存儲過程實現登錄
if (!(ds.Tables.Count<0))
判斷語句有問題
改成 if (!(ds.Tables[0].Rows.Count<0))
試一下
有困難HI我
㈥ 登錄: 該怎麼寫 SQL存儲過程語句, 手機 ,郵箱 ,帳號都可以登錄 不知道怎麼寫語句
create procere Login
(
@dengluming varchar(100)
)
as
if exists (select 1 from 用戶表 where 手機=@dengluming or 郵箱=@dengluming or 帳號=@dengluming)
begin
return ture;
end
else
begin
return false;
end
㈦ 關於用存儲過程實現用戶登錄的問題
if (result.Value==0)
{
Response.Write("<script>alert('登錄成功')</script>");
}
else if (result.Value==1)
{
Response.Write("<script>alert('密碼錯誤')</script>");
}
else
{
Response.Write("<script>alert('用戶名不存在')</script>");
}
這樣不行嗎??
㈧ oracle中登錄的存儲過程例子
create or replace procere usp_login(i_name varchar,i_pwd varchar,o_infocode out number,o_infotext out varchar)
is
v_cnt int;
begin
select count(*) into v_cnt from usertable where username=v_name;
if v_cnt = 0 then
o_infocode:=11;
o_infotext:='用戶不存在';
return;
end if;
select count(*) into v_cnt from usertable where username=v_name and userpwd=v_pwd;
if v_cnt = 0 then
o_infocode:=12;
o_infotext:='密碼不正確!';
return;
else
o_infocode:=0;
o_infotext:='登陸成功!';
end if;
return;
end;
㈨ 如何用pl/sql編程實現用戶登錄採用存儲過程
用以下的方式可以監控登入登出的用戶:
建如下的兩張表:
create table login_log -- 登入登出信息表
(
session_id int not null, -- sessionid
login_on_time date, -- 登錄時間
login_off_time date, -- 退出時間
user_in_db varchar2(30), -- 登入的db user
machine varchar2(20), -- 機器名
ip_address varchar2(20), -- ip地址
run_program varchar2(20) -- 以何程序登入
);
create table allow_user -- 網路用戶表
(
ip_address varchar2(20), -- ip地址
login_user_name nvarchar2(20) -- 操作者姓名
);
創建建如下的兩個觸發器:
create or replace trigger login_on_info -- 登入信息的trigger
after logon on database
Begin
insert into login_log(session_id,login_on_time,login_off_time,user_in_db,machine,ip_address,run_program)
select AUDSID,sysdate,null,sys.login_user,machine,SYS_CONTEXT('USERENV','IP_ADDRESS'),program
from v$session where AUDSID = USERENV('SESSIONID'); --當前SESSION
END;
create or replace trigger login_off_info --登出信息的觸發器
before logoff on database
Begin
update login_log set login_off_time = sysdate
where session_id = USERENV('SESSIONID'); --當前SESSION
exception
when others then
null;
END;
㈩ 三層結構中,如何用存儲過程來設計用戶登錄.
資料庫是Sql
Server7,想用存儲過程來設計用戶登錄,不知如何將客戶端的用戶名和密碼傳遞到服務端,若登錄失敗如何將信息反饋回給用戶?