The meta data is from an SQL 2012 Server.
I have posted alot more, find the whole list here.
Goto Definition or MetaData
Definition:
sys.sp_grantdbaccess(nvarchar @loginame)MetaData:
create procedure sys.sp_grantdbaccess
@loginame sysname,
@name_in_db sysname = NULL OUT
as
-- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --
set nocount on
declare @ret int, -- return value of sp call
@sid varbinary(85),
@iswin bit,
@isgrp bit,
@stmtU nvarchar(4000),
@stmtS nvarchar(4000)
if @name_in_db is null
select @name_in_db = @loginame
-- CHECK PERMISSIONS (Shiloh Check) --
if (not is_member('db_accessadmin') = 1) and
(not is_member('db_owner') = 1)
begin
dbcc auditevent (109, 1, 0, @loginame, @name_in_db, NULL, NULL, NULL, NULL, NULL)
raiserror(15247,-1,-1)
return (1)
end
-- DISALLOW USER TRANSACTION --
set implicit_transactions off
IF (@@trancount > 0)
begin
raiserror(15002,-1,-1,'sys.sp_grantdbaccess')
return (1)
end
exec @ret = sys.sp_validname @name_in_db
if @ret <> 0
return(1)
-- IS IT A WINDOWS ACCOUNT?
select @iswin = case when (charindex('\', @loginame) <> 0) then 1 else 0 end
select @isgrp = 0
-- IS IT A WINDOWS GROUP?
if @iswin = 1
begin
select @sid = get_sid('\G'+@loginame) -- nt group?
if @sid is not null
select @isgrp = 1 -- nt group
end
-- Form Create User statement
select @stmtU = 'CREATE USER '
select @stmtU = @stmtU + quotename(@name_in_db, ']')
select @stmtU = @stmtU + ' FOR LOGIN '
select @stmtU = @stmtU + quotename(@loginame, ']')
if @isgrp = 0
begin
select @stmtU = @stmtU + ' WITH DEFAULT_SCHEMA = '
select @stmtU = @stmtU + quotename(@name_in_db, ']')
end
-- Form Create Schema statement
select @stmtS = 'CREATE SCHEMA '
select @stmtS = @stmtS + quotename(@name_in_db, ']')
select @stmtS = @stmtS + ' AUTHORIZATION '
select @stmtS = @stmtS + quotename(@name_in_db, ']')
BEGIN TRANSACTION
-- create the owner
exec (@stmtU)
if @@error <> 0
begin
ROLLBACK TRANSACTION
return (1)
end
-- create the Schema if one does not already exist with the same name and owner
declare @schema_uid int
declare @owner_uid int
select @owner_uid = principal_id from sys.database_principals where name = @name_in_db
select @schema_uid = principal_id from sys.schemas where name = @name_in_db
if (@schema_uid is null or -- there is no schema since if there is one, it will have an owner
@schema_uid <> @owner_uid) -- for error message
begin
exec (@stmtS)
if @@error <> 0
begin
ROLLBACK TRANSACTION
return (1)
end
end
COMMIT TRANSACTION
-- RETURN SUCCESS STATUS --
return (0) -- sp_grantdbaccess
No comments:
Post a Comment