12. november 2002 - 09:42Der er
7 kommentarer og 1 løsning
Kopiering af stored procedure
Hvordan kan jeg kopiere en stored procedure mellem 2 databaser. Kopieringen skal forgå via et script, som jeg f.eks. kan kalde fra en 3. stored procedure. el.lign.
Da problemet skal løses via et script, så er dette bestemt ikke en løsning. Jeg skal nemlig have mulig for, at kalde scriptet fra en anden applikation.
Indholdet af dine SP ligger i syscomments. Det store problem er hvis din SP er større end nvarchar(4000). Så er den nemlig fordelt over flere rækker. Jeg løste problemet ved at udlæse og samle teksten i en ASP-applikation.
Hehe.. jeg have netop også lige fundet frem til syscomments. Lige nu har jeg problemer med at finde ud af hvordan jeg opretter den vha. den kode, som jeg har udlæst. Kan det gøres vha.:
Du skal finde dine SP i sysobjects. Ud fra id kan du så finde teksten i syscomments. Bemærk at colid angiver rækkefølgen hvis en SP fylder mere end 1 række. Og du behøver ikke selv CREATE PROCEDURE. Det er bare Conn.Execute(strSpcode)
Du må meget gerne poste noget kode når du er færdig :-)
kichian: Tusing tak for hjælpen. Jeg har søgt nettet tyndt i 3 dage for en finde hjælp til at løse opgaven. Men alle steder blev der forslået én eller anden form for benyttelse af DTS eller manuelt via EM. Så der virkelig med stor lettelse, at jeg i dag kan komme videre i "opgavelisten".
Jeg faldt over følgende på nettet, som så vidt jeg kan se skulle løse problemet:
<SQL> USE master GO IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE name = 'sp_CopyStoredprocedure') DROP PROCEDURE sp_CopyStoredprocedure GO CREATE PROCEDURE dbo.sp_CopyStoredprocedure ( @procedure sysname ,@sourceDb sysname ,@targetdb sysname ) AS /*******************************************************************************
Written By : Simon Sabin Date : 25 October 2002 Description : Copies a stored procedure from one database to another : History Date Change ------------------------------------------------------------------------------ 25/10/2002 Created *******************************************************************************/
DECLARE @lines int DECLARE @line int DECLARE @vline varchar(4) DECLARE @objectid varchar(10)
SET @SQL = 'USE ' + @sourcedb + ' SELECT @objectid = id, @lines = count(*) FROM ' + @sourcedb + '.dbo.syscomments WHERE id = object_id(@procedure) GROUP BY id'
benny.tordrup: tak for den alternative løsning, den vil jeg lige kigge mere på.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.