Prueba Esto
Código sql:
Ver originalCREATE PROCEDURE [dbo].[Sp_CrearLogin]
(
@USU VARCHAR(100),
@CLA VARCHAR(100),
@BD VARCHAR(100)
)
AS
BEGIN TRY
DECLARE @SQLString NVARCHAR(MAX)
SET @SQLString = N'CREATE LOGIN [' + UPPER(@USU) + '] WITH PASSWORD=N'''+ @CLA + ''' , DEFAULT_DATABASE=[' + @BD + '], DEFAULT_LANGUAGE=[Español], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON';
EXECUTE SP_EXECUTESQL @SQLString
SET @SQLString = N'USE NOMBD;';
SET @SQLString =@SQLString + N'CREATE USER [' + UPPER(@USU) + '] FOR LOGIN ' + '[' + UPPER(@USU) + ']';
SET @SQLString =@SQLString + N' WITH DEFAULT_SCHEMA = NOMBD;'
EXECUTE SP_EXECUTESQL @SQLString
--¡¡¡¡¡¡¡SE DEBE CAMBIAR DB_OWNER POR OTRO ROL CON MENOS PERMISOS SOBRE EL SERVIDOR!!!!!
SET @SQLString = N'EXECUTE SP_ROLEMEMBER "db_owner", [' + UPPER(@USU) + ']'
EXECUTE SP_EXECUTESQL @SQLString
END TRY
BEGIN CATCH
PRINT 'NUMERO DE ERROR: ' + CONVERT(VARCHAR,ERROR_NUMBER());
PRINT 'MENSAJE DE ERROR: ' + ERROR_MESSAGE();
END CATCH;