نمایش نتایج 1 تا 12 از 12

نام تاپیک: مجوز ايجاد كاربر توسط كاربري ديگر

  1. #1
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شهيد محلاتي
    پست
    79

    مجوز ايجاد كاربر توسط كاربري ديگر

    سلام
    من توي بانكم يه رول دارم كه مي خوام كاربرهايي كه عضو اون هستن بتونن يه كاربر ديگه براي بانك و يه لوگين و همچنين افزودن كاربر به يك رول رو انجام بدن.
    در مورد لاگين كه سرچ كردم توي تاپيك زير جوابم رو گرفتم و مشكلم حل شد ولي براي دستري هاي ديگر كه گفتم نمي دونم چيكار كنم.
    دسترسي هايي كه من نياز دارم براي كاربر عضو يك رول:
    1- ايجاد لوگين براي كاربر ديگر(حل شد)
    2- ايجاد كاربر جديد در بانك
    3- عضو كردن كاربر جديد در يك رول
    https://barnamenevis.org/showthread.php?t=87987

    در ضمن براي اعطاي مجوز به لاگين در سطح سرور با چه دستوري مي تونم اين كار رو بكنم
    بدون استفاده از MS

  2. #2
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شهيد محلاتي
    پست
    79

    نقل قول: مجوز ايجاد كاربر توسط كاربري ديگر

    با سلام
    من فكر مي كنم با اين كدي كه نوشتم مشكلم حل ميشه :

    use
    master
    CreateLogin hamid
    WITH PASSWORD ='133',
    DEFAULT_DATABASE = MYDB;
    Go
    GrantAlterAnyLoginto hamid
    Go
    Use MYDB
    CreateUser hamid ForLogin hamid
    Go
    GrantAlterAnyUserto hamid
    Go
    GrantAlterAnyRoleto hamid
    Go
    ExecSp_AddRoleMember'Manager',hamid

    ولي نميدونم چرا پيغام خطا ميده:

    Grantor does not have GRANT permission.

  3. #3
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شهيد محلاتي
    پست
    79

    نقل قول: مجوز ايجاد كاربر توسط كاربري ديگر

    سلام
    فكر كنم سوالم خيلي سخت بوده؟
    يكي به ما بگه چه جوري ميشه يك دسترسي رو به يك كاربر در سطح سرور داد مثل

    Grant
    AlterAnyLoginto hamid

    Hamid اسم يه كاربر در يك پايگاه داده غير سيستمي هستش.
    اين دستور بالا رو از توي book Online در آوردم و لي Error ميده؟
    راستي اين دستور رو با كاربر sa اجرا مي كنم. ولي نمي دونم چرا ميگه كسي كه ميخواد اين دسترسي رو بده خودش اين دسترسي رو نداره؟
    لطفاً من رو راهنمايي كنين .

  4. #4
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شهيد محلاتي
    پست
    79

    نقل قول: مجوز ايجاد كاربر توسط كاربري ديگر

    سلام ؛
    من پرميشن Alter Any Login رو با يوزر Sa به يه كاربر ديگه مي دم.بدون هيچ خطايي.
    ولي وقتي با اون يوزر ديگر به بانك متصل مي شوم :
    1- در قسمت پرميشن سرور اون كاربر دسترسي رو كه بهش اعطا شده نداره.
    2- و نميتونه به كاربر ديگري پرميشن ذكر شده رو بده.

    لطفاً من رو راهنمايي كنين.

  5. #5

    نقل قول: مجوز ايجاد كاربر توسط كاربري ديگر

    سلام دوست عزیزم،
    کارهایی که در SQL Server انجام میدیم میشه به دو دسته تقسیم کرد: Server Level و Database Level. ساخت Login در حقیقت Server Level محسوب میشه لذا با سطوح دسترسی Loginها هم باید حل بشه (که ظاهرا حل کردین). اما برای اینکه یک کاربر در دیتابیس بتونه برای سایر Loginها یک Username در دیتابیس جاری درست کنه، باید عضو db_AccessAdmin باشه

  6. #6
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شهيد محلاتي
    پست
    79

    نقل قول: مجوز ايجاد كاربر توسط كاربري ديگر

    سلام؛
    با تشكر فراوان از شما استاد گرامي
    من با ايجاد يه تغيير كوچولو در دستور اعطاي مجوز Alter Any Login مشكلم حل شد.
    قطعه كد زير براي افزودن يك كاربري كه خود بتواند كاربر ديگري در بانك ايجاد كند استفاده مي شود.
    مراحل انجام كار:
    1- ابتدا يك Login براي كاربر در سطح سرور ايجاد مي شود.
    2- مجوز Alter Any Login به آن اعطا مي شود.
    3- يك User در بانك مورد نظر ايجاد شده و با Login مرتبط مي شود.
    4- مجوز Alter Any User به كاربر در سطح بانك اعطا مي شود.
    5- مجوز Alter Any Role به كاربر در سطح بانك اعطا مي شود.
    6- در آخر نيز كاربر عضور يك Role كه براي مديران تهيه شده مي شود.
    Create Login @UserName
    WITH PASSWORD =@Password,
    DEFAULT_DATABASE = MYDB;
    Go
    Grant Alter Any Login to @UserName WITH GRANT OPTION
    Go
    Create User @UserName For Login @UserName
    Go
    Grant Alter Any User to @UserName WITH GRANT OPTION
    Go
    Grant Alter Any Role to @UserName WITH GRANT OPTION
    Go
    Exec Sp_AddRoleMember'Manager',@UserName

    فقط مسئله اي كه هست من اين كد رو نمي تونم در قالب يك Sp بنوسيم فكر مي كنم كه دستور Create Login رو نمي شه درون يك Sp با پارامتر استفاده كرد. به اين صورت كه نام كاربر و رمز عبور به عنوان پارامتر ورودي باشه و طي مراحلي كه ذكر كرد كار به صورت يك روال انجام بشه .
    ميخوام بدونم نظر من درسته يا اينكه ميشه دستور Create Login رو درون يك Sp گذاشت؟.
    با تشكر فراوان.

  7. #7

    نقل قول: مجوز ايجاد كاربر توسط كاربري ديگر

    مطمئن نیستم پارامتری بشه. نهایتا میتونین از Dynamic TSQL استفاده کنین

  8. #8
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شهيد محلاتي
    پست
    79

    نقل قول: مجوز ايجاد كاربر توسط كاربري ديگر

    سلام:
    من دستورات رو به اين صورت با استفاده از sp_executesql هم نوشتم منتهي باز هم خطاهاي فراواني ميگيره !
    آيا منظور شما از Dynamic Sql روشي هست كه من اجرا كردم؟

    Declare
    @ParamList nvarchar(200),@SQLCommand nvarchar(300)
    Set @ParamList = N'@UserName nvarchar(50),@Password nvarchar(50)'
    Set @SQLCommand =
    N
    'Create Login @UserName
    WITH PASSWORD =@Password,
    DEFAULT_DATABASE = MYDB;
    Go
    Grant Alter Any Login to @UserName WITH GRANT OPTION
    Go
    Create User @UserName For Login @UserName
    Go
    Grant Alter Any User to @UserName WITH GRANT OPTION
    Go
    Grant Alter Any Role to @UserName WITH GRANT OPTION
    Go
    Exec Sp_AddRoleMember Manager ,@UserName'
    Executesp_executesql @SQLCommand,@ParamList,@UserName ='HamidReza',@Password ='123'

  9. #9

    نقل قول: مجوز ايجاد كاربر توسط كاربري ديگر

    دوست عزیزم،
    شما کاملا درست از این SP استفاده کردین ولی مشکل اینجاست که اساسا CREATE LOGIN پارامتر نمیپذیره. این شیوه برای Queryها استفاده میشه. شما چیز شبیه به این نیاز دارید:


    Execute ('Create Login ' + @UserName ... )

  10. #10
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شهيد محلاتي
    پست
    79

    نقل قول: مجوز ايجاد كاربر توسط كاربري ديگر

    سلام
    من با استفاده از راهنمایی شما استاد عزیز یه تریگر نوشتم که بعد از درج یک رکورد اطلاعاتی در جدول کاربران به طور خودکار در بانک لاگین و دسترسی های لازم به اون داده میشه. فقط مشکلی که هست من در آخرین مرحله این تریگر کاربر ایجاد شده رو عضو یک رول می کنم (توسط Sp_AddRoleMember) و (Sp_DropRoleMember)که با خطای زیر مبنی بر عدم امکان استفاده از این Sp در یک ترنزیشن مواجه می شوم.
    The procedure 'sys.sp_addrolemember' cannot be executed within a transaction.

    خواهش می کنم در صورت امکان من رو راهنمایی کنین با تشکر.
    متن تریگر :
    Alter TRIGGER Opr_AddUserIntoDatabase
    ON Users AFTER INSERT
    AS
    BEGIN
    DECLARE @UserName nvarchar(30),
    @Password nvarchar(50),
    @UserType bit

    SELECT @UserName = UserName,
    @Password = Password,
    @UserType = UserType FROM INSERTED
    Declare @Str1 nvarchar(100),
    @Str2 nvarchar(100),
    @Str3 nvarchar(100),
    @Str4 nvarchar(100),
    @Str5 nvarchar(100)
    Set @Password = (Select QUOTENAME (@Password,''''))
    /*--Set Text For Create Login And Grant Permission On Server----------------------*/

    Set @Str1 = 'Use Master Create Login ' + @UserName +
    ' WITH PASSWORD = ' + @Password +
    ',DEFAULT_DATABASE = MYDB;'

    Set @Str2 = 'Use Master Grant Alter Any Login To ' + @UserName +
    ' WITH GRANT OPTION'
    /*--Set Text For Create User And Grant Permission On Database---------------------*/

    Set @Str3 = 'Use MYDB Create User ' + @UserName + ' For Login ' + @UserName
    Set @Str4 = 'Use MYDB Grant Alter Any User To ' + @UserName + ' WITH GRANT OPTION'
    Set @Str5 = 'USe MYDB Grant Alter Any Role To ' + @UserName + ' WITH GRANT OPTION'
    /*--Execution Texts---------------------------------------------------------------*/
    IF Not EXISTS (SELECT * FROM sys.server_principals WHERE name = @UserName)
    Begin
    Execute(@Str1)
    IF Not EXISTS (SELECT * FROM sys.database_principals WHERE name = @UserName)
    Begin
    Execute(@Str3)
    /*--Adding User On Database Role-----------------------------------*/
    IF @UserType = 1
    Begin
    Execute('Exec Sp_AddRoleMember Manager ,' + @UserName)
    Execute(@Str2)/*--Set Permission For Alter Any Login*/
    Execute(@Str4)/*--Set Permission For Alter Any User*/
    Execute(@Str5)/*--Set Permission For Alter Any Role*/
    End
    IF @UserType = 0
    Execute('Exec Sp_AddRoleMember Operator,' + @UserName)
    End
    End
    END
    GO

  11. #11

    نقل قول: مجوز ايجاد كاربر توسط كاربري ديگر

    دوست عزیزم فکر میکنم سرویس پک نداره SQL Server شما

  12. #12
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شهيد محلاتي
    پست
    79

    نقل قول: مجوز ايجاد كاربر توسط كاربري ديگر

    آیا راهی غیر از استفاده از Sp_Addrolemember برای عضو کردن یک کاربر در یک نقش وجود داره ؟
    راهی که بشه اونو در ترنزیشن بالا استفاده کرد.؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •