ฉันจะแมปเข้าสู่ระบบฐานข้อมูลโดยใช้ T-SQL (ไม่ใช่ SSMS) ได้อย่างไร


12

ฉันกำลังเขียนโปรแกรมที่กำหนดให้ฉันต้องกำหนดสิทธิ์ทั้งหมดและทุกอย่างเป็นรหัส ฉันติดค้างอยู่ในส่วนนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันแค่ต้องการทำเทียบเท่ากับการคลิกกล่องเล็ก ๆ ใต้ "แผนที่" สำหรับฐานข้อมูล msdb และกำหนดผู้ใช้นั้นให้กับบทบาท SqlAgentUser ฉันต้องการให้ผู้ใช้งานสามารถเพิ่ม / แก้ไขงาน SQL Server Agent ได้ ฉันสามารถตั้งค่าได้อย่างถูกต้องโดยใช้ SSMS แต่ฉันทำไม่ได้ตลอดชีวิตว่าจะทำอย่างไรใน SQL แบบดิบ

ฉันค้นหาALTER LOGIN แล้วแต่ไม่เห็นสิ่งใดที่ต้องการ ฉันสงสัยว่าฉันไม่ทราบเงื่อนไขที่ถูกต้องสำหรับ Google ปกติฉันจะไม่ทำสิ่งนี้

ความช่วยเหลือใด ๆ ที่ชื่นชมมาก!


3
คุณสามารถ "สร้างสคริปต์" ที่ฉันคิดว่าจะช่วยคุณในโครงการในอนาคต ที่ด้านบนของหน้าจอ
Racer SQL

1
@RafaelPiccinelli โอ้เอ้ยฉันมีประโยชน์มาก! ฉันไม่เคยสังเกตมาก่อนเลย! ขอบคุณ!
eddie_cat

ฉันไม่ดีที่รหัสนี้ช่วยฉันได้มาก
Racer SQL

คำตอบ:


18
USE msdb;
GO
CREATE USER shims FROM LOGIN shims;
GO
ALTER ROLE SqlAgentUserRole ADD MEMBER shims;
GO

นอกจากนี้สำหรับการอ้างอิงในอนาคตเมื่อใดก็ตามที่คุณรู้ว่าจะทำอะไรบางอย่างใน UI แต่ไม่ได้อยู่ในสคริปต์นี่คือสิ่งที่Scriptตัวเลือกในกล่องโต้ตอบส่วนใหญ่มีไว้ - มันจะแสดงให้คุณเห็นว่าสคริปต์ SSMS จะทำงานอย่างไร:

ป้อนคำอธิบายรูปภาพที่นี่


3

หากคุณต้องการเปลี่ยนฐานข้อมูลปัจจุบัน \ default เป็นลองใหม่:

alter login <loginname> with default_database = <dbname>;

ตอนนี้สร้างผู้ใช้สำหรับการเข้าสู่ระบบที่สร้างขึ้นข้างต้น

 use <dbname>;
 create user <username> from login <loginname>;

และตอนนี้คุณสามารถกำหนดบทบาทให้กับผู้ใช้งานสร้างด้านบนเพื่อเข้าสู่ระบบดังต่อไปนี้:

use <dbname>
exec sp_addrolemember 'db_owner', '<username>';

3
จากเอกสาร :This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use ALTER ROLE instead.
แอรอนเบอร์ทรานด์ด์

ดังนั้นฉันควรเปลี่ยนฐานข้อมูลเริ่มต้นทุกครั้งที่ฉันต้องการทำอะไรกับผู้ใช้นี้ใน msdb? ในหน้าต่างด้านบนดูเหมือนว่าคุณสามารถมีฐานข้อมูลมากกว่าหนึ่งฐานที่เชื่อมโยงกับผู้ใช้ในแต่ละครั้ง ... ผิดหรือเปล่า?
eddie_cat

@eddie_cat ไม่ฉันไม่เห็นเหตุผลในกรณีนี้เพื่อเปลี่ยนฐานข้อมูลเริ่มต้นเว้นแต่คุณต้องการให้ผู้ใช้นั้นเชื่อมต่อกับฐานข้อมูลบางอย่างเป็นค่าเริ่มต้น
Aaron Bertrand

เพื่อสร้างผู้ใช้สำหรับการเข้าสู่ระบบ; ไวยากรณ์ที่ถูกต้องมีดังนี้: ------------------------------------------- ------------------------------ ใช้ [ชื่อฐานข้อมูล] ไปสร้างผู้ใช้ [ชื่อผู้ใช้] สำหรับเข้าสู่ระบบ [ชื่อเข้าสู่ระบบ] ไป
Kundan Dasange
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.