Sql-Server

如何授予使用者僅在現有數據庫中創建表但不查看其中的其他現有表的權限

  • July 25, 2019

我們與一家外包公司打交道,安裝了一個應用程序供我們的會計部門使用。現在,他們想要訪問我們現有的數據庫來安裝他們的應用程序,但我不希望他們看到我們目前的數據庫裡面。我的意思是像表、儲存過程等。如何授予它們只是為了創建一個表而不是查看我們數據庫的其他結構?

這應該做的工作。我在我的測試環境中對其進行了測試,對我有用。

USE [master]
GO
CREATE LOGIN [TestLogin] WITH PASSWORD=N'test', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [TutorialDB]
GO
CREATE USER [TestLogin] FOR LOGIN [TestLogin]
GO
GRANT CREATE TABLE TO [TestLogin];
GO
  1. 在具有公共角色的伺服器上創建登錄名。
  2. 然後在他們需要訪問的數據庫上創建一個使用者。
  3. 授予該使用者創建表。

首先,如果他們正在安裝他們的應用程序,那麼肯定需要他們自己的數據庫而不是訪問該伺服器上的其他數據庫嗎?

但是,授予他們 dbcreator 伺服器角色的登錄成員允許他們在伺服器上創建新數據庫。

如果您需要允許他們在現有數據庫中創建表,那麼我建議您創建一個新模式供他們使用,並且只允許他們在該數據庫中的使用者對該模式具有 ALTER 權限。這樣他們就根本無法訪問您現有的表格。

引用自:https://dba.stackexchange.com/questions/243757