Bir girişi T-SQL (SSMS değil) kullanarak bir veritabanına nasıl eşleyebilirim?


12

Koddaki tüm izinleri ve her şeyi atamamı gerektiren bir program yazıyorum. Bu kısımda sıkışıp kaldım:

resim açıklamasını buraya girin

Sadece msdb veritabanı için "Harita" altında küçük bir kutu tıklatıp bu kullanıcıyı SqlAgentUser rolüne atama eşdeğer yapmak istiyorum. SQL Server Agent işleri eklemek / düzenlemek için bir kullanıcıya ihtiyacım var. SSMS kullanarak ayarları doğru alabilirim ama hayatım boyunca ham SQL'de nasıl yapılacağını anlayamıyorum.

ALTER LOGIN'i inceledim ama ihtiyacım olan şeyleri göremiyorum. Google için doğru şartları bilmediğimden şüpheleniyorum. Normalde böyle bir şey yapmam.

Herhangi bir yardım çok takdir!


3
Gelecek projelerde size yardımcı olacağını düşündüğüm "script" oluşturabilirsiniz. Ekranın üst kısmında.
Racer SQL

1
@RafaelPiccinelli oh Tanrım çok yararlı! Bunu daha önce hiç fark etmedim! Teşekkür ederim!
eddie_cat

Kodlarda gerçekten kötüyüm, bu bana çok yardımcı oluyor.
Racer SQL

Yanıtlar:


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

Ayrıca, ileride başvurmak için, kullanıcı arayüzünde bir şeylerin nasıl yapılacağını bildiğinizde, ancak bir komut dosyasında değil Script, çoğu iletişim kutusundaki seçenek budur - SSMS'nin hangi komut dosyasını yürüteceğini gösterir:

resim açıklamasını buraya girin


3

Geçerli \ varsayılan veritabanını farklı bir veritabanıyla değiştirmek istiyorsanız şunu deneyin:

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

Şimdi, yukarıdaki giriş için bir kullanıcı oluşturun

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

Ve şimdi giriş için yukarıdaki oluşturma kullanıcısına aşağıdaki gibi roller atayabilirsiniz:

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

3
Dokümanlardan :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.
Aaron Bertrand

Yani msdb bu kullanıcı ile her şeyi yapmak istediğinizde varsayılan veritabanını değiştirmek gerekir? Yukarıdaki pencerede, aynı anda bir kullanıcıyla ilişkili birden fazla veritabanına sahip olabileceğiniz anlaşılıyor ... bu yanlış mı?
eddie_cat

@ eddie_cat Hayır, bu kullanıcının varsayılan olarak belirli veritabanlarına her zaman bağlanmasını istemiyorsanız, bu durumda varsayılan veritabanını değiştirmek için hiçbir neden göremiyorum.
Aaron Bertrand

Giriş için kullanıcı oluşturmak için; doğru sözdizimi aşağıdaki gibidir: ------------------------------------------- ------------------------------ KULLANIM [DatabaseName] GO
OLUŞTURUN
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.