Hi,
I have following situation:
On one developer server I have stored procedure like this:
CREATE PROCEDURE spG_Test
as
select is_member('server3\birin')
GO
Server3\birin is local Window group on that server.
I try to sync another database on another server. That server doesn't have that local group (it't ok, becouse I use that server as backup server).
When I try to sync I have that script:
/*
Script created by SQL Compare from Red Gate Software Ltd at 12.12.2005 14:39:00
Run this script on bogibatina.birin to make it the same as server3.birin
Please back up your database before running this script
*/
SET NUMERIC_ROUNDABORT OFF
GO
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#tmpErrors')) DROP TABLE #tmpErrors
GO
CREATE TABLE #tmpErrors (Error int)
GO
SET XACT_ABORT ON
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO
IF NOT EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'SERVER3\Birin_Uprava')
exec sp_grantlogin N'SERVER3\Birin_Uprava'
GO
sp_grantdbaccess N'SERVER3\Birin_Uprava', N'SERVER3\Birin_Uprava'
GO
BEGIN TRANSACTION
GO
PRINT N'Creating [dbo].[spG_Test]'
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE spG_Test
as
select is_member('server3\birin')
GO
IF @@ERROR<>0 AND @@TRANCOUNT>0 ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT=0 BEGIN INSERT INTO #tmpErrors (Error) SELECT 1 BEGIN TRANSACTION END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT>0 BEGIN
PRINT 'The database update succeeded'
COMMIT TRANSACTION
END
ELSE PRINT 'The database update failed'
GO
DROP TABLE #tmpErrors
GO
The following error message was returned from the SQL Server:
[15401] Windows NT user or group 'SERVER3\Birin_Uprava' not found. Check the name again.
The following SQL command caused the error:
IF NOT EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'SERVER3\Birin_Uprava')
exec sp_grantlogin N'SERVER3\Birin_Uprava'
The following messages were returned from the SQL Server:
[5701] Changed database context to 'birin'.
[5703] Changed language setting to us_english.
My question is:
Why SQL compare generate this part:
IF NOT EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'SERVER3\Birin_Uprava')
exec sp_grantlogin N'SERVER3\Birin_Uprava'
GO
sp_grantdbaccess N'SERVER3\Birin_Uprava', N'SERVER3\Birin_Uprava'
GO
Is_member ('server3\Uprava') returs NULL if 'server3\uprava' doesn't exists on server.
If I try to create Stored procedure through QA and put there just
CREATE PROCEDURE spG_Test
as
select is_member('server3\birin')
GO
It works (As I expected)
Radovan
I have following situation:
On one developer server I have stored procedure like this:
Server3\birin is local Window group on that server.
I try to sync another database on another server. That server doesn't have that local group (it't ok, becouse I use that server as backup server).
When I try to sync I have that script:
The following error message was returned from the SQL Server:
[15401] Windows NT user or group 'SERVER3\Birin_Uprava' not found. Check the name again.
The following SQL command caused the error:
IF NOT EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'SERVER3\Birin_Uprava')
exec sp_grantlogin N'SERVER3\Birin_Uprava'
The following messages were returned from the SQL Server:
[5701] Changed database context to 'birin'.
[5703] Changed language setting to us_english.
My question is:
Why SQL compare generate this part:
Is_member ('server3\Uprava') returs NULL if 'server3\uprava' doesn't exists on server.
If I try to create Stored procedure through QA and put there just
It works (As I expected)
Radovan