W kodzie procedury są trzy linijki z SELECT, które wyglądają tak:
SELECT @ID=ID FROM [111.111.111.111\TEST].[BAZA_TESTOWA].dbo.Tabel2
UPDATE [111.111.111.111\TEST].[BAZA_TESTOWA].dbo.TABELA.....
Ja próbuję w miejsce [111.111.111.111\TEST] podstawić parameter @NAZWA_SERWERA oraz w miejsce [BAZA_TESTOWA] podstawić @baza_danych. Niestety nie widzę rozwiązania, ponieważ z poziomu SQL wykonanie przez EXECUTE kończy się błędem, że nie ma zlinkowanego serwera o nazwie @_NAZWA_SERWERA oraz bazie o nazwie @baza_danych.
Z poziomu C# wiem, że można tworzyć taką procedurę (kod procedury trzeba trzymać w kodzie C#), ale procedura nie utworzyć się, gdy nie będzie pierw w bazie SQL zlinkowanej bazy z innego serwera.
Może ktoś mi podpowie jak można wykonać prawidłowo ALTER PROCEDURE z poziomu kodu C#, bo wykorzystując poniższy kod mam błąd (oczywiście procedura jest już w bazie):
public void ZmienProcedure()
{
Server srv;
srv = new Server();
Database db;
db = srv.Databases["BAZA_TESTOWA"];
StoredProcedure sp;
sp = new StoredProcedure(db, "PROCEDURA_TESTOWA");
sp.TextMode = false;
sp.AnsiNullsStatus = false;
sp.QuotedIdentifierStatus = false;
//StoredProcedureParameter param;
//param = new StoredProcedureParameter(sp, "@ID", DataType.Int);
//sp.Parameters.Add(param);
//StoredProcedureParameter param2;
//param2 = new StoredProcedureParameter(sp, "@ID_M1", DataType.Int);
//sp.Parameters.Add(param2);
//StoredProcedureParameter param3;
//param3 = new StoredProcedureParameter(sp, "@NAZWISKO", DataType.NVarChar(50));
//param3.IsOutputParameter = true;
//sp.Parameters.Add(param3);
string stmt;
stmt =
"SELECT * FROM TABELA1";
sp.TextBody = stmt;
//sp.Create();
//Modify a property and run the Alter method to make the change on the instance of SQL Server.
sp.QuotedIdentifierStatus = true;
sp.Alter();
//usuń stored procedure.
//sp.Drop();
}