RE:Stored Procedure de inicializacion
Ok,
1.- Deberas tener TODO tu script de creacion de tablas y creacion de procedimientos en un ARCHIVO tipo TEXTO.
El script de creacion de PROCEDIMIENTOS, TABLAS, etc, debera contener la validacion de la existencia del objeto:
-- Para PROCEMIENTOS
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[pr_MyProcedimiento]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[pr_MyProcedimiento]
CREATE PROCEDURE pr_MyProcedimiento AS..........
-- Para TABLAS
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MyTabla]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[MyTabla]
CREATE TABLE MyTabla...................................................
Ademas, deberas agregarles los permisos a los usuarios correspondientes en el mismo script al final.
GRANT SELECT ON MyTable TO MyUsuario
Para EJECUTAR tu archivo de creacion de TABLAS, INDICES, VISTAS, PROCEDIMIENTOS, etc. deberas hacer una ejecucion del archivo con el siguiente procedimiento:
-- Suponemos que el script esta en el archivo C:\CREACION.TXT, de tu servidor de datos.
DECLARE @SQLString NVARCHAR(800)
DROP TABLE #PASO
CREATE TABLE #PASO (SQLString VARCHAR(800))
INSERT INTO #PASO
exec master.dbo.xp_cmdshell 'TYPE C:\CREACION.TXT'
SELECT @SQLString = SQLString FROM #PASO
SELECT @SQLString
EXEC sp_executesql @SQLString
Espero haberle ayudado.