Yritän selvittää käyttöoikeuksien yhdistelmän, jonka avulla kumppani voi nähdä perustiedot db-skeema, mutta ei paljasta objekteja, mukaan lukien koodi. Joten,

  1. NÄYTÄ ja VALITSE TAULUKKOISSA (mukaan lukien avaimet)
  2. Estä / EI KATAA näkymissä, tallennetuissa työasemissa, toiminnoissa. li>

Olen ajatellut käydä läpi ja kieltää yksittäiset objektit, mutta se ei suojaa uusia, jotka on luotu äskettäin.

Lisätty huomio – minun on saatava tämä toimi SQL Azuressa.

Vastaa

Voit luoda roolin ja myöntää tai peruuttaa sen käyttöoikeudet. Kaikki käyttäjät, jotka ovat osa roolista perii käyttöoikeudet.

Alla on esimerkki aloituksesta:

 -- Create the database role CREATE ROLE TableSelector AUTHORIZATION [dbo] GO ---- Grant access rights to a specific schema in the databas GRANT SELECT ON SCHEMA::dbo TO TableSelector GO -- Add an existing user to the new role created EXEC sp_addrolemember "TableSelector", "MyDBUser" GO -- Revoke access rights on a schema from a role DENY ALTER -- you can customize here ... ON SCHEMA::dbo TO TableSelector 

Vastaa

Luulen, että ehkä tarvitset vain sallitun objektiluettelon. Tämä voidaan tehdä komentosarjassa kuten alla tai määriteltävissä Ro kuten Kin on kuvannut. Alla on esimerkki oikeuksien myöntämisestä käyttäjälle käyttämällä taulukon muuttujaa, joka määrittää sallittujen objektien luettelon.

DECLARE @AllowedObjects AS TABLE( name SYSNAME ) INSERT INTO @AllowedObjects SELECT N"dbo.Table1" UNION SELECT N"dbo.Table2" DECLARE @name SYSNAME DECLARE names CURSOR FOR SELECT name FROM @AllowedObjects OPEN names FETCH NEXT FROM names INTO @name WHILE(@@FETCH_STATUS <> -1) BEGIN IF (@@FETCH_STATUS <> -2) BEGIN EXEC ("GRANT SELECT ON OBJECT::" + @name + " TO userName") END FETCH NEXT FROM names INTO @name END CLOSE names DEALLOCATE names 

Vastaa

Loppujen lopuksi käytin datareader- ja datawriter-rooleja antaakseni pääsyn tietoihin. Sitten myönnettiin NÄYTÖKSEN MÄÄRITELMÄ alla olevalla proc. Muista ylläpitää tämä …

Kiitos kaikille.

Create PROCEDURE GrantViewDefinitionOnTables (@login VARCHAR(30)) AS begin /* Included Object Types are: P - Stored Procedure V - View FN - SQL scalar-function TR - Trigger IF - SQL inlined table-valued function TF - SQL table-valued function U - Table (user-defined) */ SET NOCOUNT ON CREATE TABLE #runSQL (runSQL VARCHAR(2000) NOT NULL) --Declare @execSQL varchar(2000), @login varchar(30), @space char (1), @TO char (2) DECLARE @execSQL VARCHAR(2000), @space CHAR (1), @TO CHAR (2) SET @to = "TO" SET @execSQL = "Grant View Definition ON " SET @login = REPLACE(REPLACE (@login, "[", ""), "]", "") SET @login = "[" + @login + "]" SET @space = " " INSERT INTO #runSQL SELECT @execSQL + schema_name(schema_id) + "." + [name] + @space + @TO + @space + @login FROM sys.all_objects s -- Want the view permission to sp, view, trigger then add type code mention in above. eg: where type IN("P","V","FN",TR","IF","TF","U") WHERE type IN ("U") AND is_ms_shipped = 0 ORDER BY s.type, s.name SET @execSQL = "" Execute_SQL: SET ROWCOUNT 1 SELECT @execSQL = runSQL FROM #runSQL PRINT @execSQL --Comment out if you don"t want to see the output EXEC (@execSQL) DELETE FROM #runSQL WHERE runSQL = @execSQL IF EXISTS (SELECT * FROM #runSQL) GOTO Execute_SQL SET ROWCOUNT 0 DROP TABLE #runSQL end ------------------------ EXEC GrantViewDefinitionOnTables "MyDatabase" 

Kommentit

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *