Question

I implemented the "HelloWorld" sample of a CLR stored procedure, and it worked.

I then changed the code, recompiled, and re-ran it, and got the old results, not the new results.

Example Code Change (all other code is in above link):

Before:

SqlContext.Pipe.Send("Hello world!\n");

After:

SqlContext.Pipe.Send("Hello world new version!\n");

Is there anything short of recycling SQL to get the new assembly loaded?

Was it helpful?

Solution

Say you have created a CLR Function HelloSQLCLR() in C#
You will need the following steps before you can call it in Sql Server
Enable SQLCLR

sp_configure 'clr_enabled', 1
GO
RECONFIGURE
GO

Install and register HelloSQLCLR

Install (change the directory to the actual location)

CREATE ASSEMBLY MyUDFsLib
    FROM 'C:\Path_To_Your_DLL\HelloSQLCLR.dll'
GO

Register

CREATE FUNCTION dbo.HelloSQLCLR()
    RETURNS NVARCHAR(50)
    EXTERNAL NAME MyUDFsLib.MyUDFs.HelloSQLCLR;

Test it

SELECT dbo.HelloSQLCLR() 

Edit
If you have changed the code try something like this

ALTER ASSEMBLY MyUDFsLib 
FROM 'C:\Path_your_changed_Recomplied_DLL\.dll' 

OTHER TIPS

You need to re-create the stored procedure that is based on CLR again, just changing the DLL is not enough.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top