Aracılığıyla paylaş


Ekleme bir genişletilmiş saklı yordam SQL Server'a

Important noteImportant Note:

This feature will be removed in a future version of Microsoft SQL Server. Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible. CLR tümleştirme kullanın.

A DLL that contains extended stored procedure functions acts as an extension to Microsoft SQL Server.DLL'i yüklemek için , bir standart SQL Server DLL dosyalarını (C:\Program Files\Microsoft SQL Server\MSSQL. içeren gibi bir dizin için dosyayı kopyalayın... xVarsayılan olarak \MSSQL\Binn).

Genişletilmiş saklı yordamını DLL sunucuya kopyaladığınız sonra bir SQL Server Sistem Yöneticisi için kaydolun SQL Server her DLL saklı yordam işlev genişletildi. Bu kullanarak sp_addextendedproc sistem saklı yordam.

Security noteSecurity Note:

Sistem yöneticiniz bu zararlı ve kötü amaçlı kod bu sunucuya eklenmesi ve vermeden önce içermediğinden emin olmak için bir genişletilmiş saklı yordam iyice gözden geçirmelidir yürütmek diğer kullanıcılara izinler.Tüm kullanıcı giriş'i doğrulayın.Kullanıcı girişi doğrulama önce bitiştirmek değil.Hiçbir zaman unvalidated kullanıcı girişi oluşturulmuş bir komut çalıştırabilirsiniz.Giriş doğrulaması hakkında daha fazla bilgi için bkz: SQL ınjection.

Ilk parametresi sp_addextendedproc fonksiyonun adını belirtir ve ikinci parametre bu işlev içinde bulunduğu DLL adını belirtir.DLL dosyasının tam yolunu belirtmeniz önerilir.

Important noteImportant Note:

Tam yol kaydedilen varolan DLL'ler, SQL Server 2005'e yükselttikten sonra çalışmayacak.Sorunu gidermek için kullanın. sp_dropextendedproc DLL dosyasının kaydını kaldırın ve sonra onu yeniden ile sp_addextendedproctam yol belirterek.

Belirtilen işlev adı sp_addextendedproc tam olarak aynı büyük/küçük durum, DLL işlevin adı olarak da dahil olmalıdır.Örneğin, bu komut bir işlev kaydeder. xp_hellobir dll içinde bulunan biçiminde xp_hello.dll, adlı...SQL Server Genişletilmiş saklı yordam:

sp_addextendedproc 'xp_hello', 'c:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\xp_hello.dll'

Fonksiyonun adını belirlediyseniz sp_addextendedproc , DLL işlev adı tam olarak eşleşmiyor, yeni bir ad kaydedileceği SQL Server, ancak adı kullanılabilir. Örneğin, ancak xp_Hello biçiminde kaydedilirSQL Server Genişletilmiş saklı yordam xp_hello.dll içinde bulunan SQL Server kullanırsanız, işlevin DLL'DE bulmak açamaz. xp_Hello , daha sonra işlev çağırmak için.

--Register the function (xp_hello) with an initial upper case
sp_addextendedproc 'xp_Hello', 'c:\xp_hello.dll'

--Use the newly registered name to call the function
DECLARE @txt varchar(33)
EXEC xp_Hello @txt OUTPUT

--This is the error message
Server: Msg 17750, Level 16, State 1, Procedure xp_Hello, Line 1
Could not load the DLL xp_hello.dll, or one of the DLLs it references. Reason: 127(The specified procedure could not be found.).

Fonksiyonun adını belirlediyseniz sp_addextendedproc işlev adı tam olarak DLL ve harmanlama eşleşirSQL Server Örnek büyük/küçük harfe duyarlıdır, kullanıcı genişletilmiş saklı yordam adını ve büyük-küçük durum birleşimini kullanarak arama.

--Register the function (xp_hello)
sp_addextendedproc 'xp_hello', 'c:\xp_hello.dll'

--The following will succeed in calling xp_hello
DECLARE @txt varchar(33)
EXEC xp_Hello @txt OUTPUT

DECLARE @txt varchar(33)
EXEC xp_HelLO @txt OUTPUT

DECLARE @txt varchar(33)
EXEC xp_HELLO @txt OUTPUT

Zaman, harmanlamayı SQL Server Örnek duyarlıdır SQL Server farklı bir servis talebiyle yordamı tarafından çağrılırsa, tam olarak aynı ad ve harmanlama--DLL işlev olarak kaydedildiği bile--genişletilmiş saklı yordam çağırmak gideremez ve çözemez.

--Register the function (xp_hello)
sp_addextendedproc 'xp_hello', 'c:\xp_hello.dll'

--The following will result in an error
DECLARE @txt varchar(33)
EXEC xp_HELLO @txt OUTPUT

--This is the error
Server: Msg 2812, Level 16, State 62, Line 1

Durdurup yeniden başlatmak gerekli değildir SQL Server.