台灣最大程式設計社群網站
線上人數
839
 
會員總數:244892
討論主題:188887
歡迎您免費加入會員
討論區列表 >> MS SQL >> 有關伺服器角色
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
有關伺服器角色
價值 : 200 QP  點閱數:1124 回應數:6

樓主

真的有點難
高級專家
10667 28
6159 1395
發送站內信

請教一下 各位先進 是否有伺服器角色 可以執行那些指令的清單

例如 我要truncate table 我要 drop table .....delete insert ....

需要怎麼去設定伺服器 角色與使用者對應等細節




搜尋相關Tags的文章: [ 伺服器角色 ] ,
本篇文章發表於2018-07-16 23:35
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

pilipala
檢舉此回應
通常都只會指定資料庫層級的 DataReader 和 DataWriter 給使用者,比較不會設定到伺服器層級角色,

MSDN 上的說明參考看看
伺服器層級角色
資料庫層級角色
本篇文章回覆於2018-07-17 10:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

真的有點難
檢舉此回應
db_ddladmin
db_datawriter
db_datareader 我都開了
但預到procedure 會出現
訊息 229,層級 14,狀態 5,程序 PROC_TEST,行 1 [批次開始行 0]
結構描述 'db_owner',資料庫 'JH',物件 'PROC_TEST' 沒有 EXECUTE 權限。
本篇文章回覆於2018-07-17 11:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

真的有點難
檢舉此回應
我寫了一個測試的procedure 裡面有我常使用的語法 這些指令 要開哪些權限呢
當然sysadmin不能開

create PROCEDURE PROC_TEST
AS
CREATE TABLE #REP(
ID INT IDENTITY(1,1) PRIMARY KEY,
COL1 NVARCHAR(50) NULL DEFAULT(''))

CREATE TABLE #REP1(
ID INT IDENTITY(1,1) PRIMARY KEY,
COL1 NVARCHAR(50) NULL DEFAULT(''))


INSERT #REP(COL1)
SELECT '1'


INSERT #REP1(COL1)
SELECT '1'

SELECT T1.* INTO #REP2 FROM #REP T1 JOIN #REP1 T2 ON T1.ID=T2.ID

declare @path nvarchar(100)
set @path='D:\mis\sql_backup\JH'+replace(convert(char(10),getdate(),111),'/','')+'.bak'
BACKUP DATABASE [JH] TO DISK = @path WITH INIT

ALTER TABLE #REP ADD COL2 INT NULL
ALTER TABLE #REP ALTER COLUMN COL2 NVARCHAR(50) NULL

UPDATE #REP SET COL1='123'
DELETE #REP WHERE ID =2

SELECT SUBSTRING(CONVERT(CHAR(10),T1.ID),1,1) AS ID
INTO #REP3
FROM #REP T1 JOIN #REP2 T2 ON T1.ID=T2.ID
WHERE T1.ID IN('1')

DROP TABLE #REP2


DECLARE @IDX INT

DECLARE db_cursor CURSOR FOR
SELECT id FROM #REP UNION SELECT ID FROM #REP1
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @IDX

WHILE @@FETCH_STATUS = 0
BEGIN

INSERT #REP1(COL1)
SELECT @IDX

FETCH NEXT FROM db_cursor INTO @IDX
END
CLOSE db_cursor
DEALLOCATE db_cursor

SELECT COUNT(*) COUNT INTO #COUNT FROM #REP
SELECT SUM(id) SUM INTO #SUM FROM #REP
SELECT MIN(ID) MIN INTO #MIN FROM #REP
SELECT MAX(ID) MAX INTO #MAX FROM #REP
SELECT * INTO #XX FROM #REP WHERE ID BETWEEN 1 AND 2
SELECT GETDATE() gd INTO #DD

TRUNCATE TABLE #REP3

DECLARE @ABC NVARCHAR(50)='abc'
SELECT REVERSE(@ABC) REVERSE INTO #REVERSE
SELECT UPPER(@ABC) UPPER INTO #UPPER
SELECT LOWER(@ABC) LOWER INTO #LOWER

IF LEN(@ABC)=3
BEGIN
SELECT '長度3'
END
ELSE
BEGIN
SELECT '長度非3'
END




本篇文章回覆於2018-07-17 11:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

pilipala
檢舉此回應
必須給使用者 Store Procedure 的執行權限

這篇可以參考看看
[MSSQL] 給予User預存程序的Execute權限 (腳本方式)
本篇文章回覆於2018-07-17 12:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

真的有點難
檢舉此回應
感謝大大神恩
那 sql server Agent 要怎麼開放使用者 管理呢
本篇文章回覆於2018-07-17 15:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
最有價值解答

pilipala
檢舉此回應
請自行參考
設定使用者可建立及管理SQL Server Agent 作業
本篇文章回覆於2018-07-17 22:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.