SQL Server kullanıcıları özellikle ilk başlarda Remote Connections safhasında çeşitli problemler ile karşılaşıyorlar.
Genelde SQL Serverın TCP/IP tanımlamalarının Local ve Remote için default olarak uygun niteliklerde gelmemesinden dolayı bu tür problemler ile karşılaşma ihtimalimiz yüksektir.
Database engine sekmesinde named pipes only özelliğinin seçili olduğunda da çeşitli problem doğabiliyor.
Biz hem TCP/IP hem de named pipes kullanarak bu problemi aşabiliyoruz.
Biz Local ve Remote bağlantılar için store procedure ve dos prompt ile remote connection konumlandırmasını aktif hale getireceğiz.
Syntax ise şöyle : Exec master..remoteconn protocol,1 or 0
Named pipes aktif hale getirmek için dos prompt olarak sqlcmd -E -S -Q”Exec master..remoteconn np,1 yazarak aktif olacaktır.
Ardından net stop mssql$instancename ve net start mssql$instancename yazarak SQL Server'ı tekrar aktif getirerek uygulamızın sonucunu görebiliyoruz.
Tüm bu işlemler için hazırlanmış bir store procedure ile zahmetsizce bu işlemleri gerçekleştirebilirsiniz.
CREATE procedure remoteconn
@val varchar(5),
@enable bit
as
Declare @inspath varchar(10),@regw varchar(100),@ke varchar(100),@ke1 varchar(100)
Declare @insname varchar(25)
if convert(varchar(25),serverproperty('instancename')) is null
set @insname='MSSQLSERVER'
else
set @insname=convert(varchar(25),serverproperty('instancename'))
EXEC master.dbo.xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key='Software\Microsoft\Microsoft SQL Server\Instance Names\SQL\',
@value_name=@insname,
@value=@inspath OUTPUT
set @regw='Software\Microsoft\Microsoft SQL Server\'+@inspath+'\MSSQLSERVER\SuperSocketNetLib\'
if @val='np'
begin
set @ke=@regw+@val+'\'
end
else
if @val='tcp'
begin
set @ke=@regw+@val
end
else
if @val='tcpnp'
begin
set @ke=@regw+'tcp'
set @ke1=@regw+'np'
if @enable=1
begin
EXEC master.dbo.xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',
@key=@ke1, @value_name='Enabled', @type='REG_DWORD',@value=1
end
else
begin
EXEC master.dbo.xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',
@key=@ke1, @value_name='Enabled', @type='REG_DWORD',@value=0
end
end
if @enable=1
begin
EXEC master.dbo.xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',
@key=@ke, @value_name='Enabled', @type='REG_DWORD',@value=1
end
else
begin
EXEC master.dbo.xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',
@key=@ke, @value_name='Enabled', @type='REG_DWORD',@value=0
end
Kolay Gelsin :)