Wednesday, April 8, 2009

Sql Server 2005 Linked Server Scripting issue

I generated the 'CREATE' script of a linked server in my DB and got the following script

EXEC master.dbo.sp_addlinkedserver @server = N'MYSERVERNAME', @provider=N'SQLNCLI', @datasrc=N'MYINSTANCENAME, @catalog=N'SOMENAME'

I dropped the same and tried to add it with the above script and it gave me the error

Msg 15429, Level 16, State 1, Procedure sp_addlinkedserver, Line 42
'(null)' is an invalid product name.

Solution :- Add the product name also in the sp parameters.

An sp_helptext on the sp showed this:-

create procedure sys.sp_addlinkedserver
@server sysname, -- server name
@srvproduct nvarchar(128) = NULL, -- product name (dflt to ss)
@provider nvarchar(128) = NULL, -- oledb provider name
@datasrc nvarchar(4000) = NULL, -- oledb datasource property
@location nvarchar(4000) = NULL, -- oledb location property
@provstr nvarchar(4000) = NULL, -- oledb provider-string property
@catalog sysname = NULL -- oledb catalog property
as


etc etc ...

The Script Linked Server as Create To command somehow missed the @srvproduct parameter.

So the modified sql statement will be

EXEC master.dbo.sp_addlinkedserver @server=N'MYSERVERNAME', @srvproduct=N'MSSQLSERVER', @provider=N'SQLNCLI', @datasrc=N'MYINSTANCENAME, @catalog=N'SOMENAME'