Bu SQL Server ODBC Bağlantısını nasıl çalıştırabilirim?


30

Not: Açıkça sunucu adlarını ve IP'leri hayali olanlara değiştirdim.

İşte neler oluyor. MYSERVERMicrosoft SQL Server Express 2005 çalıştıran, aradığım bir sunucum var . Bu sunucunun kendisinde, kendisine işaret eden bir ODBC bağlantısı kurdum ve bu zaten mükemmel çalışıyor. SQL Server Kimlik Doğrulama (Windows kimlik doğrulaması değil) kullanarak giriş yapıyorum ve şöyle ayarlandı:

İyi ODBC bağlantısının görüntüsü

Dediğim gibi, bu işe yarıyor. Ancak bir sonraki adım, MYSERVER'te barındırılan bu aynı SQL Server'a erişmesi gereken intranette tamamen farklı bir etki alanında bulunan / olmayan bir bilgisayarım var. Farklı bir etki alanında olduğundan, "MYSERVER" adını tanımıyor; Bunu söyleyeceğim MYSERVER'in IP adresine 123.456.789.012. Ancak ODBC bağlantısı orada işe yaramadı. Böyle ayarlamayı denedim:

Kötü ODBC bağlantısının görüntüsü

Bu işe yaramıyor. Kullanıcı adı ve şifreyi girip İleri'ye bastığımda, 10 - 20 saniye kadar iyi duruyor ve sonunda aşağıdaki hatayla geri geliyor:

Connection failed:
SQLState: '01000'
SQL Server Error: 1326
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.

Aynı şeyi denersem, ancak "sunucu" 123.456.789.012\SQLEXPRESSyu sadece düz eskiden değiştirirseniz 123.456.789.012, farklı bir hata alıyorum:

Connection failed:
SQLState: '01000'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()).
Connection failed:
SQLState: '08001'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.

Şimdi ne düşündüğünü biliyorum. "Ah, muhtemelen 1433 numaralı bağlantı noktasının güvenlik duvarını açmamışsındır", aptal. Yaptığım dışında ve başarılı bir şekilde çalıştırabildiğim için bunu doğruladım :

telnet 123.456.789.012 1433

... bütün istediğim komut satırından. Yani ne yapacağımdan emin değilim. Ben, SQL Server var çalıştığını biliyorum ve bir ODBC bağlantı olabilir düzgün bir şekilde kurulmuş olması; Bağlantı ayarlarımda bu hataları atan yanlış olanın ne olduğundan emin değilim. Listelenen son hataya dayanarak, sunucuya bağlanabileceği görülüyor, ancak örneği bulamıyorum (o zaman bir tane belirtmediğim için). Öyleyse bu, IP'yi bir örnek adıyla birlikte belirtmek için sadece farklı bir sözdizimi kullanmam gerektiği anlamına mı geliyor? Ben ne yaparım? Şimdiden teşekkürler.

Yanıtlar:


18

SQL server 2005 için adlandırılmış yöneltmeler ve TCIP protokolleri varsayılan olarak devre dışıdır. Onları "SQL sunucu yapılandırma yöneticisi" altında mı etkinleştirdiniz? Protokolleri SQL Server Ağ yapılandırmasında ve SQL Native client xx yapılandırması altında bulabilirsiniz.

Sunucunun üzerindeki bağlantı "Paylaşılan hafıza" protokolü sayesinde çalışır.


9
Cevabınızı kabul ediyorum çünkü bu beni doğru yolda buldu. SQL Server Yapılandırma Yöneticisi altında, TCP / IP zaten "SQL Server 2005 Ağ Yapılandırması> SQLEXPRESS için Protokoller" ve "SQL Yerel İstemci Yapılandırması> İstemci Protokolleri" altında etkin hale getirildi. Adlandırılmış Borular, ikincisinde zaten etkindi. Eskiden etkinleştirdim, ancak bu yardımcı olmadı (aynı hata mesajları). Sonunda ODBC kaynağını, "SQL Server" sürücüsü yerine "SQL Native Client" sürücüsünü kullanmaya başladım ve sonunda DID çalıştı.
soapergem

Teşekkürler SoaperGEM! SQL Native Client'ı denemiş olacağımı asla düşünmezdim! Bir cazibe gibi çalıştı!
Phillip Senn,

5

Eğer etkin mı SQL Server Browser hizmetini gereği uzak bağlantılara izin vermek SQL Server 2005 nasıl yapılandırılır ?:

SQL Server 2005'i bir örnek adı kullanarak çalıştırıyorsanız ve bağlantı dizenizde belirli bir TCP / IP bağlantı noktası numarası kullanmıyorsanız, uzak bağlantılara izin vermek için SQL Server Tarayıcı hizmetini etkinleştirmelisiniz. Örneğin, SQL Server 2005 Express, Computer Name \ SQLEXPRESS varsayılan adıyla yüklenir.


Sunucudaki yerel \ sunucuya bağlanmak, uzaktan olduğundan farklı bir mekanizma kullanıyor mu?
Sam

@Sam, Hakan Winther'in cevabına bakınız.
Sim

4

Bu iş parçacığı aynı MSSQL 2008 sunucusuna bağlanmak için Access'i kullanırken benim için aynı hata iletisini düzeltti. MSSQL 2005 ve önceki sürümleri, yalnızca bağlantı dizesindeki bilgisayar adını kullanarak çalışıyordu, ancak örnek 2008'e yükseltildiğinde tam formdaki Access dizesindeki bağlantı dizgisini değiştirmek zorunda kaldım:

servername\instancename,portnumber


2
Bu benim için yaptı, ancak liman numarasına ihtiyacım yoktu.
bgmCoder

2

Aynı sorunu yaşadım ve SQL sürücüsünü de SQL Native Client sürücüsüyle değiştirerek çözmeyi başardım. Benim durumumda bu yıllarca iyi çalışıyor ve sonra sadece çalışmayı durdurdu gibi garipti. Bunun sürücünün hatları boyunca bozulmuş bir şey olduğundan şüpheleniyorum, belki bir MDAC yeniden yüklemesi yardımcı olabilir, ancak şu an için çalıştığı için mutluyum!


1

Tamamen nitelikli olsaydı, sunucu adını tanır mıydı? MYSERVER.alan_adı.com olsaydı? Farklı bir etki alanından bağlanırken bunu SQL Server ile yapmak zorunda kaldık. Veri kaynağını test ederken ODBC Sistemi DSN'sini bağlayabiliyorsanız, ilerleme kaydettiniz. ODBC kurulumunda bağlanmadıysa, önce bunu düzeltmeniz gerekir.


Bu tam olarak yapmaya çalıştığım şey - veri kaynağını test ederken ODBC Sistem DSN'sinin ilk etapta bağlanmasını sağlamak. Bu yüzden, önerinizi çalıştı hem çalışıyor MYSERVER.domain.com\SQLEXPRESSve MYSERVER.domain.comancak bu ikisi bana sırasıyla yukarıda listelenen aynı hataları verdi.
soapergem

Diğer bilgisayardaki komut isteminde "nslookup MYSERVER.domain.com" yazın - bu doğru IP adresine mi (123.456.789.012) ya da hiç çözülüyor mu?
Sim

@Sim - Evet, bu komut yapar düzgün kararlılık.
soapergem

1

İşe yarayan ODBC bağlantısında adlandırılmış yöneltme veya TCP kullanıyor musunuz? TCP etkin mi?


1

SQL sunucusu için etkin uzak tcp bağlantılarının olduğundan emin olun.


0

Burada sadece vahşi bir çekim var ama sunucu adından veya IP adresinden önce ters eğik çizgi koyarsanız ne olur? Bana öyle geliyor ki normalde çoğu diğer Windows / Microsoft bağlantılarında gerekli.


Çift ters eğik çizgiyi denemek aynı 1326 hatasına neden olur (ilk listelenenim).
soapergem

0

Ben de benzer bir sorun yaşadım. Benim durumumda bir başka sw ODBC ayarını yapılandırır, böylece sürücüyü değiştiremem. Davamı böyle çözdüm:

  1. 1433 numaralı bağlantı noktasını kullanmak için sunucunun TCP / IP ayarlarını yapın.
  2. İstemcide aşağıdaki gibi sunucu adresini girin: 192.168.1.5,1433 (örnek adı yok)

Sonra çalışmaya başladı. Müşteri İşletim Sistemi: Win7 x64 Sürücü: sqlsrv32.dll


0

Ne pahasına olursa olsun, bu hatayı daha önce çalışmakta olan bir bağlantıda almaya başladım. MSSQL $ SQLEXPRESS hizmetinin bir şekilde durduğu ortaya çıktı. Yeniden başlatmak sorunu çözdü.


0

Ben de bu sorunu yaşadım ve bu kadar basitti: bu sunucu için birincil DNS sunucusu olarak listelenen sunucu kaldırıldı ve uygulama artık ağdaki SQL sunucusunun adını doğru şekilde çözemedi. Yerel DNS sunucusunu çalışan bir sisteme düzeltirken her şey hemen çalışmaya başladı.

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.