SQL Server bir kullanıcı oluşturma. SQL İsteği Bir kullanıcı oluşturma (değişiklik). Transact-SQL Dil Talimatları ile Veritabanı Güvenlik Yönetimi

NotAçıklanan tüm eylemler sunucuda, haklarla gereklidir. Yönetici. Sunucuya fiziksel erişiminiz yoksa ( SQL Server ) Veya uzak masaüstünden erişin veya hesabınızın hakları, yeni kullanıcılar oluşturmak için kullanıcıları yönetmenize izin vermez, ardından burada düşünülen soruyu çözemezsiniz. Eğer öyleyse, yardım için sistem yöneticinize başvurun.

Sıradan bir sanal barındırmanın varsa, daha sonra dolaşım olmadan teknik Destek Hosting şirketiniz, veritabanınızın kullanıcıları bağımsız olarak yönetemezsiniz.

Başlatmak Microsoft SQL Server Management Studio Ve sunucuya bağlanın.

Listede "Object Observer" (Görüntülenmiyorsa, F8 tuşuna basın) Klasörü açın "Emniyet". Tıklayın sağ tık Klasörün üstünde fare "Giriş adları", Görünen menüde, "Bir giriş adı oluştur ...".

Görünen pencerede, alanda "İsim girin" Girişi belirtin. Örneğin: "YOLPER" (quavichek olmadan). Ardından kimlik doğrulama türünü seçin. Varsayılan değer "Windows Kimlik Doğrulaması", Bu, bağlı olduğunda SQL Server Hesap kullanılacak pencereler. Kural olarak, bu yöntem uzak sunucularda kullanılmaz. Seç "SQL Server Kimlik Doğrulaması". Bölümde "Parola", Herhangi bir şifreyi belirtin, ana şey kullanıcıya göndermek için onu yazmaktır. Şifre kaybolursa, herhangi bir zamanda değiştirilebilir.

Seçeneği bıraktığınızdan emin olun. "Şifre politikalarının kullanımını gerektirir". Diğer seçenekler: "Şifre limit süresini ayarla" ve "Kullanıcı bir sonraki girişte şifreyi değiştirmelidir"İsteğe bağlı olarak kullanın, ancak genellikle sunucuya bağlanırken gereksiz sorunlar yaratmamak için bağlantısı kesildi.

Aynı pencerede, en altta, varsayılan veritabanı. Kullanıcıyı sunucuya bağladıktan sonra açılacak olan bu tabandır. Tıklayın Tamam mıBir hesap oluşturmak için.


Hesap oluşturuldu, ancak hepsi değil. Şimdi bir hesabı tablolarla ilişkilendirmeniz gerekir. Aslında, bir hesap oluştururken, ancak bu yolu yazdığında yapılır, SQL Server 2008. Nedense, oluşturulan hesabın tablolarla bağlantısını hatırlamayı reddetti (in 2005 Böyle bir aksaklık gözlenmedi).

Bir hesabı belirli tablolarla ilişkilendirmek ve kullanıcı haklarını tanımlamak için, klasörü genişletin "Giriş adları" Nesne tarayıcısında. Oluşturulan hesabı listede bulun ve üzerine sağ tıklayın, Menü'yi seçin. "Özellikleri".


Görünen pencerede, bölüme gidin "Haritalama Kullanıcıları". Üstten üstündeki listede, bu hesapla çalışabileceğiniz tabloları işaretleyin. Altında listede hakları seçin. Genellikle yeterli "DB_OWNER".


Bundan sonra düğmeye tıklayın Tamam mı. Şimdi erişilen hesabı erişmek için kullanabilirsiniz. SQL Server.

5 cevap

Sorunuza göre, kullanıcı ile giriş arasındaki farkı karıştırabileceğinizi düşünüyorum. Giriş SQL Server'da bir hesap olarak bir hesaptır - sunucuya girebilecek ve şifresi olan biri. Kullanıcı, belirli bir veritabanına erişimi olan bir giriştir.

Bir giriş oluşturmak, kullanıcı hesabını belirli bir veritabanına giriş yapmak için yapmak için kolayca ve gereklidir (açıkça):

Şifre ile Oturum Aç NewAdminName Oluştur \u003d "ABCD" GO

İşte, yalnızca bağlı bir girişi kullanarak DB_Owner ayrıcalıklarına sahip bir kullanıcı oluşturduğunuz:

YourDatabase kullanın; Olmazsa gidin (Sys.Database_Principals'ten * Sys.Database_Principals, NAME \u003d N "NEWADMINNAME") Giriş Exec Sp_Addrolemember N "DB_Owner", n "NewAdminName" sonu için kullanıcı oluşturmaya başlayın; Git.

Şimdi girişler daha yüksek gibi göründüğümden biraz daha fazla sıvı. Örneğin, bir kullanıcı hesabı, bir veritabanı kurarken Windows Yönetici hesabı için otomatik olarak oluşturulur (çoğu SQL Server ayarlarında). Çoğu durumda, veritabanını yönettiğimde kullanıyorum (tüm ayrıcalıklara sahip).

Bununla birlikte, Uygulamadan SQL Server'a erişebiliyorsanız, sunucuyu "Karışık Mod" (hem Windows için hem de SQL girişi için) yapılandırmanız ve yukarıda gösterildiği gibi bir oturum açma oluşturmanız gerekir. Ardından, başvurunuz için gerekenlere dayanarak bu SQL girişi için "hibe" ayrıcalıklarını alacaksınız. Daha fazla bilgi için bkz.

Güncelleme: Aaron, hesabınızın hazırlanan rolünü atamak için SP_ADDSRVROLEMEMBER'in kullanımını gösterir. Bu iyi bir fikir - manuel olarak ayrıcalıklar sağlamaktan daha hızlı ve kolay. Eğer bulursanız, birçok bağlantı göreceksiniz. Ancak, giriş ve kullanıcı arasındaki farkı hala anlamak zorundasınız.

Tüm sunucu veya belirli bir veritabanı için tam yönetici hakları? Bence geri kalanının veritabanına cevap verdiğini, ancak sunucu için:

Kullanım; Git Oturum Aç Mynewadminuser Şifreli \u003d n "ABCD", CHECK_POLICY \u003d OFF, CHECK_EXPIRES \u003d KAPALI; GO EXEP SP_ADDSRVROLEMBANYA @LOGINAME \u003d n "mynewadminuser", @ roleneme \u003d n "sysadmin";

Kontrol_ parametrelerini kullandığınız SQL Server Express'in hangi sürümüne bağlı olarak bırakmanız gerekebilir (bu bilgileri sorunuza dahil etmek neredeyse her zaman faydalıdır).

Ortak bir komut dosyası oluşturmak istiyorsanız, bunu kullanıcı adınız ve veritabanı adınızla değiştirme ile yürütme talimatını kullanarak yapabilirsiniz.

@UserName'i varchar (50) olarak bildirmek; @DefaultDatabasename'i varchar (50) olarak bildirmek; @LoginCreationScript'i varchar (maks) olarak bildirmek; @UsercreationScript'i varchar (maks) olarak bildirmek; @TempUserCreationScript'i varchar (maks) olarak bildirmek; @defaultdatabasename \u003d "data1" set; @UserName \u003d "domain \\ username" set; @loginCreationScript \u003d "Windows'tan Windows'tan [(Kullanıcı Adı)] Default_Database \u003d (DatabasEname)" Set @UsercreationScript \u003d "Kullanın (DatabaseName) Oturum Açma [(Kullanıcı Adı)] Oluşturun [(Kullanıcı Adı)]; Exec Sp_Addrolemember" "" Db_datareader "" "" "(Kullanıcı Adı)"; Exec Sp_Datawriter "" DB_Datawriter "", "" (Kullanıcı Adı) ""; Schema :: dbo [(Kullanıcı Adı)]; " / * Giriş oluşturma * / SET @ LoginCrationScript \u003d (Değiştir), "(DatabaseName)", @UserCreationScript \u003d Değiştir (@UsercreationScript, "(username)", @username) Execute (@LoginCreationScript) / * Kullanıcı Oluşturma ve Rol Atama * / Set @TempUserCreationScript \u003d Değiştir (@UserCreationScript, "(DatabaseName)", @defaultdatabasename) Execute (@tempusercreationScript) Set (@UsercreationScript, "(DatabaseName)", "db2") yürütme ( @tempUserCreationScript) Set @TempUserCreationScript \u003d Değiştir (@UserCreationScript, "(DatabaseName)", "dB3") Execute (@TempUserCreationScript)

Kullanabilirsiniz:

Giriş oluşturun. Şifre ile \u003d " "; Git.

Ayrıca kullanabilirsin:

Hibe izni [, ... n] Schema :: Schema_Name

Kullanıcılara atadığınız şema için izinleri yapılandırmak için.

Geçen hafta, Microsoft SQL Server 2014 Developer Edition sürümünü dev sayfamda kurdum ve hemen daha önce hiç görmediğim bir sorunla karşılaştım.

SQL Server'ın çeşitli sürümlerini sayısız zamanlar kurdum ve bu genellikle ağrısız bir prosedürdür. Sunucuyu kurun, kontrol konsolunu çalıştırın, çok basittir. Bununla birlikte, bu yüklemeyi tamamladıktan sonra, sunucuya SSMS ile girmeye çalıştığımda, aşağıdakine benzer bir hatam vardı:

SQL Server 18456'da Hata Günlüğü "Bir Kullanıcı İçin Giriş Hatası (Microsoft SQL Server, Hata: 18456)" Giriş yaparken yanlış şifreyi girersem - ancak yalnızca IM bir karışık mod kullanıyorsa (Windows ve SQL kimlik doğrulaması). Bu durumda, sunucu yalnızca Windows kimlik doğrulaması kullanılarak yapılandırıldı ve kullanıcı hesabıydı. Ben hala tüketicimi kurulum sırasında Sysadmin'in rolüne neden eklemediğinden emin değilim; Belki de bir adım kaçırdım ve eklemeyi unuttum. Her durumda, herhangi bir umut kaybolmadı.

Başka biriyle giriş yapamıyorsanız düzeltmenin yolu muhasebe SQL Server'da, ağ girişini arayüz boyunca eklemek içindir. komut satırı. Bunun için olmanız gerekir windows yöneticisi Girdiğiniz PC için.

MSSQL servisini durdurun. Komut istemini "Yöneticiden Başlangıç" komutunu kullanarak açın. Depolandığı klasöre gidin Exe dosyası SQL Server; Varsayılan olarak, SQL Server 2014, "C: \\ Program Dosyaları \\ Microsoft SQL Server \\ MSSQL12.MSSSQLSERVER \\ MSSQL \\ Binn" kullanır. Gerçekleştirmek sonraki komut: "sqlservr.exe -m". SQL Server'ı tek kullanıcı modunda başlatır. Bu komut satırından çıkın, bir tane daha açın, 2. ve 3. adımları tekrarlayın. İkinci komut satırı penceresinde, bu pencerede "SQLCMD -S Server_NAME \\ Example_NAME" çalıştırın, her birinin enter tuşuna basarak aşağıdaki satırları başlatın: 1

Windows 2'den [Domen_Name \\ kullanıcı adı] girişi oluşturun. 3 GO 3 SP_ADDSRVROLEMEMBER "LOGIN_NAME", "SYSADMIN" 4 GO Kullan komut satırı pencerelerindeki her iki işlemi tamamlamak için CTRL + C kullanın; SQL Server işlemini tamamlamak için Y'yi tıklamanız istenecektir.

MSSQL servisini yeniden başlatın. Budur! Artık ağ girişinizi kullanarak giriş yapabilirsiniz.

Kullanıcı veritabanı kullanıcıları oluşturma SQL Server 2005, Kullanıcı Özellikleri Oluşturma

Bir veritabanı oluştur Kullanıcı olabilir:

q kaptan grafik ekranda Namebase_name | Güvenlik |Kullanıcılar. yönetim stüdyosunda;

q Takımı Kullanma Kullanıcı oluştur. (saklı yordam sP._ kullanıcı Eklebu amaç için kullanılır Önceki sürümler SQL Server, yalnızca ters uyumluluğu sağlamak için bıraktı). Örneğin, bir kullanıcı oluşturmak için bir komut Kullanıcı1login SQL Server ile eşleşecek Login1 Varsayılan şema ile dbo.şöyle görünebilir:

Default_schema \u003d dbo ile giriş login1 için kullanıcı1 oluşturun;

Bir kullanıcı oluştururken, belirtmeniz gerekir:

s. kullanıcı adı (Kullanıcı adı), aynı kuralların diğer SQL Server nesnelerine göre uygulandığı;

s. oturum aç (SQL Server veya Windows), bu veritabanının kullanıcısına atanacak. Bir kullanıcı oluşturduktan sonra, atanan giriş değiştirilemez. Herhangi bir giriş için atanmayacak bir kullanıcı oluşturabilirsiniz (bir anahtar kullanarak) Olmadan.oturum aç.). Bu kullanıcı girişi atayamaz. Bu tür kullanıcılar - giriş yapmadan - sadece için kullanılır ek ayar Servis komisyoncusu güvenlik. Ayrıca, bazı girişler zaten kullanıcıya atanmışsa, aynı anda başka bir kullanıcıyı tanımlamak imkansızdır;

s. sertifika SERTİFİKA ADI) veya asimetrik anahtar (Anahtar adı);

s. varsayılan şema (Varsayılan şema);

herhangi biri için zamanlamak Bu kullanıcı olacak sahip (Sahip olunan şemalar);

q ne veritabanı rolleri (Veritabanı rolleri) atanacaktır.

Zorunlu parametre sadece iki - kullanıcı adı ve giriş yapın.

Sekmede Emniyetli olanlar. Hemen veritabanı nesneleri için izinler verebilirsiniz. İzinler sağlanmasına ilişkin konuşma aşağıdaki bölümlerde gidecektir. Sekmek GenişletilmişÖzellikleri. Bu nesnenin ek kullanıcı özelliklerini tanımlamanızı sağlar. Genişletilmiş veritabanı özellikleri ile aynı hedefler için kullanılırlar. (Bkz. Bölüm 4.8).

Kullanıcının özelliklerini değiştirme ve silme Management Studio'daki aynı kaptan kullanıcının oluşturulması ve ayrıca komutlarla yapılır. Kullanıcı / Bırak kullanıcısını değiştirin. Veritabanındaki herhangi bir nesneye sahip bir kullanıcıyı silin.

Onlarca yıl, veritabanına erişim sağlama sürecinin yönetimini kolaylaştırmak için veritabanlarında kullanıcı rollerini tanımlama yeteneği var, ancak örnek düzeyinde, her zaman dokuz sabit rol (veya SQL önceki sürümü kullanıyorsanız, sekiz) varoldu. Server 2000, BULKADMIN rolü SQL Server 2005'te ortaya çıktı). Şimdi, SQL Server 2012'nin ortaya çıkmasıyla, standart dışı veya kullanıcı yaratma olasılığı, sunucu rolleri nihayet ortaya çıktı.

Uzun yıllar boyunca, bu işlevselliğin erişilemezliği, SQL Server yöneticilerinin baş ağrısının kaynağıydı. Örnek düzeyinde birkaç kullanıcıya veya gruba haklar sunmanız ve bu hakların senkronizasyonunu sağlamak için ihtiyaç duyuyorsanız ne yaptınız? Geliştirme merkezlerinde engelleme bilgilerini görebilmeleri için çok sayıda kullanıcının doğru sistem durumunu sağlamanız gerektiğini varsayalım. Her kullanıcı veya etki alanı grubuna ayrı ayrı haklar sağlamak zorunda kaldık.

Tüm giriş adları etki alanıysa, bir geçici çözüm idi: içine bu haklara ihtiyaç duyan tüm kullanıcıları dahil etmeniz gereken bir etki alanı grubu oluşturabilirsiniz (her bir sunucu için hakları sağlamak için gerekli olsaydı, her sunucu için ayrı gruplar oluşturmak gerekirdi) birden fazla sunucu). Kullanıcıları bu gruba ekleyebilirsiniz, bu etki alanı grubuyla ilişkilendirilen girişin adını oluşturun, ardından grubu Sunucudaki Görüntü Sunucusu durumuna sağlayacaktır. Ancak çok dikkatli bir şekilde yapmak gerekliydi. Aksi takdirde, daha önce böyle olan kullanıcılara giriş yapma hakkını sağlamak mümkündü. Kullanıcılara onları sağlamanın imkansız olduğu hakları sunma olasılığı bile vardı.

T / SQL Araçları Oluşturma

T / SQL, SQL Server Management Studio ve Windows PowerShell dahil olmak üzere sunucuda bir kullanıcı rolü oluşturmanın birçok yolu vardır. T / SQL kullanarak özel bir sunucu rolü oluşturmak istiyorsanız, üç komutu kullanmanız gerekir: Sunucu Oluşturma Rolü komutunu oluşturma özel bir sunucu rolü oluşturur, Alter Sunucu Rol Talimatı, kullanıcıyı rolü ve sonunda, Hibe talimatı doğru rol haklarını sağlayacaktır.

Bu üç talimatın kullanımı, görüntülemeci adlı bir kullanıcı sunucusu rolü oluşturan aşağıdaki kodda gösterilmektedir. Somefakelogin kullanıcısı role eklenir ve görünüm sunucusu durumunun rolü sağlanır. Bu hakkı diğer kullanıcılara sağlamak için, onları ALTER sunucu rolü talimatının istemi rolüne eklemek için yeterlidir.

GO KULLANIM SERVERİ ROLÜ ROMUSU YETKİLİĞİ GO ALTER Sunucu Rolü Ekle Üye Go Hibe View Sunucu Durumunu Gitmek için

ALTER Sunucu Rol Talimatı, bir kullanıcıyı silmek için kullanılır. Üye Ekle parametresinde ve Bırak Üyesi'nde kullanılır:

Alter Sunucu Rolü Bırak Üyesi Git

Birçok SQL Server örneğine bir veya daha fazla kullanıcı rolünü dağıtmanız gerektiğinde, birkaç olası seçeneği vardır. Kesinlikle her bir sunucuya ayrı ayrı bağlanmayı ve üzerinde kullanıcı sunucusu rolleri oluşturmayı sevmezsiniz. Bir seçenek, SQL Server Management Studio konsolunu kullanmaktır. İçinde, T / SQL'deki komut dosyalarını hemen birden fazla kopyada çalıştırabilirsiniz.

Ayrıca kullanabilirsin windows Bileşenleri PowerShell SQL Server, kuruluştaki tüm SQL Server örneklerinde yeni kullanıcı sunucusu rollerini dağıtmak için. (Birçok seçenek var windows kullanır PowerShell görevi yerine getirmek için, ancak açıklamaları bu makalenin ötesine geçer.)

SQL Server Management Studio Konsolu

Görev, araçlarla kolayca yapılabilir. grafik arayüzü SQL Server Management Studio. Özel bir sunucu rolü oluşturmak için, bir nesne Gezgini örneğine bağlanın. Nesne tarayıcısında, düğüme gidin<name_expublic\u003e / Güvenlik / Sunucu rolleri. Sunucu Rolleri'ni sağ tıklatın ve yeni sunucu rolünü seçin. Yeni Sunucu Rol penceresinde, Sunucu Rolü Adı alanında, rolün adını belirtin, Sahip Alanında rol sahibini belirtin, ardından rolün üyeleri tarafından sağlanacak nesneleri ve izinleri belirtin ( İncir. bir).

İncir. bir. Bir rol sağlama haklarını girin

Genel sayfada tamamlandıktan sonra, Üyeler sayfasına gidin ( İncir. 2.) Ve bu kullanıcı sunucusu rolüne dahil edilmesi gereken SQL Server giriş adlarını belirtin.

İncir. 2. Rolün üyelerinin tanımı

Üyeler sayfasındaki rol üyelerini belirledikten sonra, Üyelikler sayfasına gidin. Üye bir kullanıcı sunucusu rolü olması gereken sunucu rolleri. Bu sayfada bazı rolü seçerseniz, kullanıcılar, özel sunucu rolünün üyeleri de seçilen rol hakkına sahip olacaktır.

Bir kullanıcı rolü oluşturursanız ve sabit sunucu rolünün bir üyesi oluşturursanız ( İncir. 3.), Yeni oluşturulan kullanıcı rolünün tüm üyeleri ayrıca ServerAdmin'in rolü rolü olacaktır. Etki alanı gruplarının veya veritabanı rollerinin yatırımında olduğu gibi, Rolleri eklerken, kullanıcılara olmaması gereken hakları sağlamak için daha fazla dikkatli olmak gerekir.

İncir. 3. Özel roller diğer sunucu rollerine dahil edilebilir.

Ekini T / SQL Roles ile düzenlemek için, ALTER SUNUCU ROL ifadesi ekle üye parametresi ile tekrar gereklidir. Örneğin, Kullanıcı Sunucusu Rol ViewerState'i, Sabit Sunucu Rolü Setupadmin'in bir üyesi tarafından yapılması için, Sabit Sunucu Rolünü SetupAdmin'i değiştirmeniz gerekir.

ALTER Sunucu Rolü Üye Git Ekle

Kullanıcı sunucusu rollerinde birçok kullanıcı olabilir. Bu hakların yönetimini basitleştirmek için bir kullanıcı sunucusu rolü ile sağlanabilecek düzinelerce örnek seviyesi vardır. Ayrıca, bir parça sağlamak, ancak tüm yönetici hakları olan genç veritabanı yöneticisi için de bir rol oluşturabilirsiniz. İdari hakların tüm eksiksizliğini sağlamadan, Alwayson veritabanı geçişini (SQL Server dahilinde gerçekleştirilmelidir) gerçekleştirme hakkını sağlayan bir alwaysonAdmin grubu oluşturabilirsiniz.

Özel sunucu rollerinin çok yararlı olduğu için çok fazla durum var. Yöneticinin çalışmalarını büyük ölçüde kolaylaştıracaklar. Ayrıca, bu tür gruplar, yanlışlıkla kullanıcıları sağlanamayan haklarla yanlışlıkla sağlama olasılığını azaltarak SQL Server örneklerinin güvenliğini arttırır.

MS SQL DBMS kullanarak istemci-sunucu modunda 1C çözümlere dayanan işletmelerin bilgi tabanlarını dağıtırken, farklı kullanıcılar adına farklı veritabanlarına sahip olmak gerekir. Şunlar. SQL Management Studio'da, SA dışında bir kullanıcı almamız ve verilerini yeni IB penceresinin penceresine girmemiz gerekebilir. (Fig1.)

Bunun anlamı, bunun tüm fonksiyonu ne olacak?

Metodik destek malzemelerinde, "Bu kullanıcının yalnızca veritabanının tam hakları olmaması gerektiğini söylüyor. bilgi tabanı, aynı zamanda SQL Server'da veritabanı oluşturma ve ana veritabanı tablolarını okuma hakkı. Uygulamada nasıl çalıştığını görmek için, MS SQL Server 2008 R2 Express'i kullanarak IB test kurulumunu istemci-sunucu sürümüne test edeceğiz. Elbette, SA kullanıcının parametrelerini aptalca kopyalayabilir, ancak anlamlı bir şekilde yapalım, her zaman faydalıdır.

SQL Management Studio 2008 R2 ortamını başlatın, SQL sunucusuna bağlantıyı ayarlayın ve güvenlik bölümünü açın-\u003e Giriş adlarını açın ve komutu seçin bağlam menüsü "Bir giriş adı oluşturun", kullanıcı adını ayarlayın ve doğru şekilde belirleyin Dbcreator, halka açık(İncir. 2)

Kullanıcı haritalama sayfasının Özellikler sayfasında, "Şema" bölümünü, ilişkili kullanıcıların tablosundaki tüm veritabanlarını işaret ediyoruz. master, Model, MSDB, Tempdb,ve tablodaki her veritabanı için, Rol'lerin üyeliğini not ederiz. genel, db_OWNER (Şekil 3)

Şimdi, Şekil 2'de gösterilen pencereye geri dönebilirsiniz. 1 ve girilen parametreleri uygulayın. Basın Daha ileri-> hazırve ... Temel oluşturulur, bazlar listesi bir konum arttı.

Yani biz zevk ve sakin olabiliriz sistem yöneticisiSonuçta, belirtilen MS SQL kullanıcının hakları kombinasyonu, istemci-sunucu modunda bir 1C platformla kullanmak için minimal olarak yeterlidir ve "SA" şifresi ödün vermez ve MS SQL'ye ihtiyacınız olan haklara sahibiz.


Üst.