Sql Server sql sunucuya bağlı sunucu kurulumu


25

Lütfen SQL Server bağlantılı bir sunucu kurmak için neyin gerekli olduğunu açıklayın.

Sunucu A, SQL 2005 Windows yalnızca oturum açar Sunucu B aynı (yalnızca SQL 2005 Windows oturum açar)

Sunucu A, Windows XP'yi çalıştırır. Sunucu B, Windows Server 2003'ü çalıştırır.

Her iki SQL Server hizmeti de aynı etki alanı hesabı altında çalışıyor. İş istasyonuma her iki SQL Sunucusunda da yönetici haklarına sahip bir etki alanı hesabıyla giriş yaptım.

Bunların ikisinin de SQL Server 2005 SP2 olduğunu unutmayın - Bana gösterilen eski düzeltmeler var, ancak bunlar zaten uygulanmış.

Sahip olduğum sorun şu hatadır: "Oturum açma, 'NT AUTHORITY \ ANONYMOUS LOGON' kullanıcısı için başarısız oldu. (Microsoft SQL Server, Hata: 18456)"

Yanıtlar:


18

Bu konuyu anladığımdan beri bu bir "HOP" sorunudur.

yani giriş bilgilerinizi (SSPI ile birlikte) Sunucu B'ye iletmek için A sunucusunu kullanmaya çalışıyorsunuz.

SQL Server 2005'te, olması gerekenden daha zor hale getiren bir dizi güvenlik sorunu eklediler. "Kerberos Kimlik Doğrulama" kelimeleri çoğu sys-admin / DBA'nın hayatının hanesi olacak. Doğrudan kimlik doğrulaması için etkili bir şekilde kullanılır.

İhtiyacınız olanın temelleri burada. 1) Sunucuların (A ve B), Active Directory'de (AD) Kerberos için yetki verilmiş olarak ayarlanması gerekir. (bu, aktif dizin yönetici paneliniz aracılığıyla ayarlanır)

2) SQL Sunucularınızın çalıştığı hizmet hesabının delegasyonu etkinleştirmesi de gerekir (bu, aynı zamanda aktif dizin yönetici panelinizle de ayarlanır). - bir hizmet hesabı altında çalışmıyorlarsa, bir tane oluşturmanız gerekir.

3) Sunucular, örnek ve HOST ve makine adı için tanımlanmış SPN'lere sahip olmalıdır. (Windows destek araçlarında SetSPN adlı bir araç kullanarak)

Destek Araçları (SetSPN bu settedir) http://www.microsoft.com/downloads/details.aspx?FamilyID=96a35011-fd83-419d-939b-9a772ea2df90&DisplayLang=tr

(Bir SPN'nin nasıl ekleneceğine genel bakış) http://technet.microsoft.com/en-us/library/bb735885.aspx

4) DB'nizi "güvenilir" duruma getirmeniz gerekebilir

ALTER VERİTABANI SETİ güvenilir

5) Tüm bunları yaptıktan sonra, örneklerinizi yeniden başlatın.

6) Ardından bağlantılı sunucunuzu tekrar oluşturmayı deneyin.

Sonunda bağlantınızı SQL Server ile test edebilirsiniz. Her şey doğru yapılandırılmışsa, bu iyi çalışmalıdır.

SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=ServerB;Integrated Security=SSPI;'
    ).MASTER.dbo.syscolumns

Bu size bağlantı kimlik doğrulama tipinizi söyleyecektir.

select auth_scheme from sys.dm_exec_connections where session_id=@@SPID

Buraya 'KERBEROS' almak istiyor ve 'NTLM' değil.

Kaygan bir eğim, KERBEROS ve Pass-through delegasyonu, buna bağlı kal ve sonunda onu çöz.

Referanslar Kerberos http://blogs.msdn.com/sql_protocols/archive/2005/10/12/479871.aspx

http://blogs.msdn.com/sql_protocols/archive/2006/12/02/understanding-kerberos-and-ntlm-authentication-in-sql-server-connections.aspx

http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/the-biggest-mistake-serviceprincipalname-s.aspx

Sorunun diğer belirtileri http://www.sqlservercentral.com/Forums/Topic460425-359-1.aspx

http://msdn2.microsoft.com/en-us/library/aa905162(sql.80).aspx

http://msdn2.microsoft.com/en-us/library/ms189580.aspx

Umarım bütün bunlar yardımcı olur.


Mükemmel cevap! Bu kesinlikle başka yerlerde faydalı bir şekilde organize edilmemiş bir bilgi yükünü özetlemektedir.
ConstantineK

3

GUI ile daha rahatsanız, \ \ bağlantılı sunucuları yönetmek için SQL Server Management Studio'yu (SSMS) da kullanabilirsiniz. Böyle yaparak:

  1. SSMS'yi başlatın ve bağlamak istediğiniz SQL Server örneklerinden birine bağlanın
  2. Nesne Gezgini'nde "Sunucu Nesneleri" ni genişletin
  3. "Linked Servers" üzerine sağ tıklayın ve "New Linked Server" ı seçin.
  4. "Yeni Bağlantılı Sunucu" iletişim kutusunda, Sunucu Türü olarak "SQL Server" ı seçin ve bağlanmak istediğiniz SQL Server örneğini girin.
  5. "Güvenlik" sayfasında, kullanıcıların geçerli sunucudan bağlı sunucuya nasıl kimlik doğrulama yapacaklarını seçin. Her iki sunucunun da Windows Login kullanacak şekilde ayarlandığından bahsettiniz. Bu durumda, "Yukarıdaki listede tanımlanmayan bir giriş için," bölümünde belirtilen bağlantılar altında: " Büyük olasılıkla " Loginin şu anki güvenlik bağlamı kullanılarak yapılır " etiketli seçeneği seçerdim .

Bunun, A sunucusunda oturum açan kullanıcıların B sunucusunda da oturum açtığını varsaydığını unutmayın.


1

Aynı problemle çıldırıyorum! Bunu 2000 ile yapmanın her zaman kolay olduğunu hatırlıyorum. Google’ın her yerinde bulundum ve bu işe yaramıyor. Tam olarak aynı kurulum, her ikisi de bir etki alanı hesabında çalışan sunucular, Windows auth

TCP yerine adlandırılmış yöneltmeler kullanmaya çalışıyorum ve en azından farklı bir hata alıyorum:

EXEC sp_addlinkedserver 
    @server='statler', 
    @srvproduct='', 
    @provider='SQLNCLI', 
    @datasrc='np:statler', 
    @provstr='Integrated Security=SSPI'

-- Then I try this:
select net_transport, auth_scheme 
from statler.master.sys.dm_exec_connections 
where session_id=@@spid

/*

Getting closer, but still fails:

OLE DB provider "SQLNCLI" for linked server "statler" returned message 
    "Login timeout expired".
OLE DB provider "SQLNCLI" for linked server "statler" returned message 
    "An error has occurred while establishing a connection to the server. 
    When connecting to SQL Server 2005, this failure may be caused by the 
    fact that under the default settings SQL Server does not allow 
    remote connections.".
Msg 5, Level 16, State 1, Line 0
Named Pipes Provider: Could not open a connection to SQL Server [5]. 
OLE DB provider "SQLNCLI" for linked server "statler" returned message 
    "Invalid connection string attribute".

*/

Bunun isim borularını etkinleştirmekle bir ilgisi olabilir, ancak sqlcmd üzerinden A sunucusundan B sunucusuna şu şekilde bağlanabilirim:

WALDORF:>  Sqlcmd.exe /E /Snp:statler

Eğer adlandırılmış yöneltmeler kullanmamışsam ve şunu yapmalısınız:

New Linked Server
Server Type: SqlServer
Security: be made using the current login's security context

Bunu anladım:

Login failed for user NT AUTHORITY\ANONYMOUS LOGIN

[Düzenle] Sql Server Central'da bunun hakkında bir tartışma başlattım. Temel olarak, bunun işe yaraması için Kerberos delegasyonu ile ilgili bazı karmaşık yapılandırmalar yapmanız gerekir.

http://www.sqlservercentral.com/Forums/Topic574262-146-1.aspx

Bağlantılı sorguları işlemek için sadece sınırlı bir Sql Login hesabı açmaya karar verdim. Buna başvurmaktan nefret ediyorum, ancak windows auth ile çalışmasını sağlamak için yapmanız gereken değişikliklerden daha güvenli görünüyor.


Karmaşık Kerberos kurulumu için aşağıya bakınız. Bu şey beni uzun süredir öldürdü!
evilhomer

0

Sp_addlinkedserver ve sp_linkedservers'da bir arama yaparsanız, bazı örnekler alırsınız. Kurulumu oldukça kolaydır.


0

Ayrıca, SQL Manager varsa, onun GUI ile ekleyebilirsiniz.

Temel olarak, iki sunucuyu Tim tarafından belirtilen SP'ler veya GUI aracılığıyla bağlamanız ve ardından erişim kurallarını ayarlamanız gerekir (her iki sunucuda Windows kimlik doğrulaması kullanıyorsanız bile gerekli değildir).


0

Bunun kolay olması gerektiğini biliyorum, ama benim için hiç çalışmıyor - Burada güvenlik sorunları yaşıyorum. Bu yüzden birinin benim için adımları hecelemesini istiyorum.

Bunu geçmişte SQL 2000’de sorunsuz olarak yaptım.


0

Yani onları bağlayabilirsiniz, ancak yanlış hesaplar nedeniyle sorgu yürütemezsiniz?

Kullanmaya çalıştığınız Windows kullanıcısının her iki sunucudaki verileri okuma hakkı var mı?

Bir zamanlar da bir sorun yaşadım çünkü "data access" özelliği bilinmeyen bir nedenden ötürü false olarak ayarlandı.

Ayrıca, bağlantı için bir kullanıcıyı başka bir kullanıcıya açıkça ayarlarsanız ne olacağını da deneyin.

(Bunların hepsi SQL Manager'da yapılabilir.)


0

Tim, doğru adım olduğunu düşündüğüm adımların tamamını gönderdi. Adım 5, güvenlik sayfasıdır. "Oturum açmanın şu anki güvenlik bağlamı kullanılarak oluştur" u seçiyorum.

Tamam'ı tıklattığımda aşağıdaki hatayı alıyorum. Neden 'NT Authority \ Anonymous login' kullanmaya çalıştığını bilmiyorum. Her iki sunucuda da tüm hakları olan alan adı hesabımla iş istasyonuma giriş yaptım.

BAŞLIK: Microsoft SQL Server Management Studio

"Bağlantılı sunucu oluşturuldu, ancak bir bağlantı testi başarısız oldu. Bağlantılı sunucuyu korumak ister misiniz?"

------------------------------ EK BİLGİ:

Bir Transact-SQL deyimi veya toplu işlemi yürütülürken bir istisna oluştu. (Microsoft.SqlServer.ConnectionInfo)


'NT AUTHORITY \ ANONYMOUS LOGON' kullanıcısı için oturum açma başarısız oldu. (Microsoft SQL Server, Hata: 18456)

Yardım için, şu adresi tıklayın: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3068&EvtSrc=MSSQLServer&EvtID=18456&LinkId=20476


0

Sunucuya yerel olarak giriş yaparken bunu yapmaya çalışın, eğer uzak bir makineden yaparsanız uygun kimlik bilgilerini göndermiyor olabilirsiniz.

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.