--創(chuàng)建登陸帳戶(create login)
create login dba with password='abcd1234@', default_database=mydb
--為登陸賬戶創(chuàng)建數(shù)據(jù)庫用戶(create user),在mydb數(shù)據(jù)庫中的security中的user下可以找到新創(chuàng)建的dba
create user dba for login dba with default_schema=dbo
要使 dba 帳戶能夠在 mydb 數(shù)據(jù)庫中訪問自己需要的對象, 需要在數(shù)據(jù)庫 mydb 中建立一個“數(shù)據(jù)庫用戶”,賦予這個“數(shù)據(jù)庫用戶” 某些訪問權(quán)限,并且把登陸帳戶“dba” 和這個“數(shù)據(jù)庫用戶” 映射起來。 習(xí)慣上,“數(shù)據(jù)庫用戶” 的名字和 “登陸帳戶”的名字相同,即:“dba”。 創(chuàng)建“數(shù)據(jù)庫用戶”和建立映射關(guān)系只需要一步即可完成
--通過加入數(shù)據(jù)庫角色,賦予數(shù)據(jù)庫用戶“db_owner”權(quán)限
exec sp_addrolemember 'db_owner', 'dba'
BEGIN TRANSACTION;
UPDATE test.AccountInfo set balance = balance - 6989.00, operateTime = GETDATE() --取出賬戶001中的余額;
WHERE accountID = '001';
IF (@@ERROR = 0) --成功取出余額;
BEGIN
UPDATE test.AccountInfo set balance = balance + 6989.00, operateTime = GETDATE() --存入賬戶002中;
WHERE accountID = '002'
IF (@@ERROR = 0) --成功存入余額,則提交事務(wù);
COMMIT TRANSACTION;
ELSE
ROLLBACK TRANSACTION; --否則回滾;
END
ELSE
ROLLBACK TRANSACTION; --取出余額失敗,回滾;7y
GO
SELECT * FROM test.AccountInfo;
GO