none
Create stored procedure on linked server

    질문

  • Hi there!

    I need to create stored procedure on linked server. I've tried with many ways, but none of them works...

    Can anyone please give me some code becouse i am going crazy (last 24 houres seaching internet).

    Use LinkedServer.DatabaseName

    Create Procedure ProcedureName  Doesn't work


    If you can't fix something try with bigger hammer
    2010년 4월 22일 목요일 오후 10:37

답변

  • I tried it in my machine my above sample code...it is working fine...

    Could you please let me know what is the error you are getting ?

     

    • 답변으로 표시됨 goranzadro 2010년 4월 27일 화요일 오전 8:30
    • 답변으로 표시 취소됨 Naomi NModerator 2016년 2월 15일 월요일 오후 11:06
    • 답변으로 표시됨 Naomi NModerator 2016년 2월 15일 월요일 오후 11:06
    2010년 4월 23일 금요일 오전 9:09

모든 응답

  • Try:

    EXEC('CREATE PROCEDURE ProcedureName AS ...') AT LinkedServer;


    Plamen Ratchev
    2010년 4월 23일 금요일 오전 1:20
    중재자
  • It has some potential but it still creates procedure on local server... Also, when i type LinkedServer.Database it gives error (bad syntax) - so how  sql know on which database will put procedure?
    If you can't fix something try with bigger hammer
    2010년 4월 23일 금요일 오전 7:17
  • The below statement should work. Use SP_executeSQL with the database name where the stored proc to be created.

    EXEC

     

    ('exec tempdb.dbo.sp_executesql @statement =N''create procedure testx as begin select 1 end''') AT <LinkedServername>

     

    2010년 4월 23일 금요일 오전 7:32
  • The below statement should work. Use SP_executeSQL with the database name where the stored proc to be created.

    EXEC('exec tempdb.dbo.sp_executesql @statement =N''create procedure testx as begin select 1 end''') AT <LinkedServername>

    2010년 4월 23일 금요일 오전 7:33
  • can you please show me how.. this is the code

    execute

     

    ('Execute Database.dbo.sp_executesql @statement =N''CREATE PROCEDURE dbo.MyStoredProcedure

    @ForceStopUntil datetime,

    @PeriodMessageNumber smallint,

    @PeriodPauseSeconds tinyint,

    @FromClarionDate int,

    @ToClarionDate int

    AS

    DECLARE @XMLDOC XML

    DECLARE @XMLDOCU XML

    DECLARE @XMLTEXT NVARCHAR(MAX)

    DECLARE @XMLTEXTU NVARCHAR(MAX)

    DECLARE @User as varchar(255)

    DECLARE @GUID as char(16)

    DECLARE @Repeat int

    DECLARE @RowCounter int

    DECLARE @ForceStop datetime

    DECLARE @DelayTime as varchar(8)

    SET @DelayTime=''00:''+RIGHT(''00''+cast(cast(@PeriodPauseSeconds/60 as int) as char(1)),2)+'':''+

    RIGHT(''00''+cast((@PeriodPauseSeconds - cast(@PeriodPauseSeconds/60 as int)*60) as varchar(2)),2)

    ...

     

    END --WHILE

    UPDATE dbo.MyStoredProcedure SET RowsProcessed=@RowCounter WHERE TableName=''BILAG''

    UPDATE  dbo.MyStoredProcedure SET DoneUpload=GetDate() WHERE TableName=''BILAG''

    CLOSE table_cursor

    DEALLOCATE table_cursor'''

     

    , 952) AT UDB213;


    If you can't fix something try with bigger hammer
    2010년 4월 23일 금요일 오전 7:46
  • I tried it in my machine my above sample code...it is working fine...

    Could you please let me know what is the error you are getting ?

     

    • 답변으로 표시됨 goranzadro 2010년 4월 27일 화요일 오전 8:30
    • 답변으로 표시 취소됨 Naomi NModerator 2016년 2월 15일 월요일 오후 11:06
    • 답변으로 표시됨 Naomi NModerator 2016년 2월 15일 월요일 오후 11:06
    2010년 4월 23일 금요일 오전 9:09
  • Try something like this:

    EXEC('USE DBName; EXEC(''CREATE PROCEDURE ProcedureName AS SELECT 1 AS x;'')') AT LinkedServer;


    Plamen Ratchev
    2010년 4월 23일 금요일 오후 4:16
    중재자
  • i was sick (that's way i am pretty late with answer). I solved this in another way (with tables and one extra procedure), but thanks for answers


    If you can't fix something try with bigger hammer
    2010년 4월 27일 화요일 오전 8:32
  • How do you specify which database ? AT <LinkedServername>.<DatabaseName> doesn't work
    2016년 2월 12일 금요일 오후 5:31
  • EXEC server.db.sys.sp_executesql @sql

    2016년 2월 12일 금요일 오후 10:56
  • How can a proc be created that has single quotes for string literals?

    Both of these return a syntax error near 'aaa':

    EXEC('USE MyDatabase; EXEC(''CREATE PROCEDURE testx3 AS SELECT ''aaa'' AS x;'')') AT MyLinkedServer;

    EXEC('USE MyDatabase; EXEC(''CREATE PROCEDURE testx3 AS SELECT 'aaa' AS x;'')') AT MyLinkedServer;

    The difference is in the single quote count around aaa.

    -- Thanks,

    Conrad

    2018년 3월 1일 목요일 오전 1:36
  • This is an advanced question...  You have a string, within a string, within a string. 

    4 single quotes around each side of the aaa,  Or: ''''aaa'''' .  I tested it to make sure.
    *****
    This knowledge of 4 quotes is helpful when trying to pass Variables into an OpenQuery statement within a stored procedure.

    Also, sometimes you can have, set @sql=replace(@sql,'''','''''')  (4 ' and 6 ')

    And sometimes you have to run this twice.

    2018년 6월 14일 목요일 오전 1:39
  • Even worse case... 8 single quotes within 4 single quotes. :)
    EXEC('USE Security; EXEC(''CREATE PROCEDURE testx4 AS SELECT ''''John''''''''s'''' AS x;'')') AT MyLinkedServer
    2018년 6월 14일 목요일 오전 1:59