User-Kennwort per SP ändern

DerHamburger

Neuer Benutzer
Beiträge
2
Hallo,
ich bin noch ganz neu hier und hoffe mir kann kann jemand weiterhelfen.
Ich benutze den SQL-Server 2014 Express und möchte über eine SP das Kennwort für einen User ändern (SQL-Server-Anmeldung)
Wenn ich folgende Abfrage direkt ausführe klappt das auch:

USE DBxyz;
GO
ALTER LOGIN test
WITH PASSWORD = '777';
GO
--#####################
Folgende SP habe ich mir gebastelt:
USE [DBxyz]
GO
/****** Object: StoredProcedure [dbo].[ChangeKW] Script Date: 19.10.2016 21:13:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ChangeKW]
-- Add the parameters for the stored procedure here
@username nvarchar(2048),
@password nvarchar(2048)
AS
BEGIN
SET NOCOUNT OFF;

-- User-Passwort ändern

ALTER LOGIN [@username]
WITH PASSWORD = N'@password';

--declare @t nvarchar(4000)
--set @t = N'ALTER LOGIN ''''' + @username + ''''' WITH PASSWORD = ''''' + @password + ';'

--set @t = N'ALTER LOGIN ' + @username + ' WITH PASSWORD = ' + @password + ';'
--set @t = N'ALTER LOGIN ''''' + @username + ''''' WITH PASSWORD = ''''' + @password

END
--#####################
Der Aufruf sieht z. Zt. so aus:
USE [DBxyz]
GO

DECLARE @return_value int

EXEC @return_value = [dbo].[ChangeKW]
@username = 'test',
@password = '777'

SELECT 'Return Value' = @return_value
GO

--#####################
Ich habe schon vieles versucht, bekomme das aber nicht hin. Hoffentlich kann mir jemand helfen.
Vielen Dank und schöne Grüße
Oliver
 
Werbung:
Werbung:
Hallo ukulele,
der Hinweis auf das dynamische SQL hat mich zu der Lösung geführt. Es funkt. jetzt wie unten angeführt. Falls es mal jemand anderes noch brauchen kann.
Vielen Dank
Oliver

-- Aufruf:
USE [DBxyz]
GO
DECLARE @return_value int

EXEC
@return_value = [dbo].[ChangeKW]
@username = 'test',
@oldpassword = '123',
@newpassword = '777'
SELECT 'Return Value' = @return_value
GO

--######################################
-- Stored Procedure: [dbo].[ChangeKW]
USE [DBxyz]
GO
/****** Object: StoredProcedure [dbo].[ChangeKW] Script Date: 20.10.2016 14:00:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[ChangeKW]
-- Add the parameters for the stored procedure here
@username nvarchar(2048),
@newpassword nvarchar(2048),
@oldpassword nvarchar(2048)
AS
BEGIN
SET NOCOUNT OFF;

-- User-Passwort ändern
DECLARE @SQLString NVARCHAR(500)
SET @SQLString = 'ALTER LOGIN ' + quotename(@username) + ' WITH PASSWORD= ' + quotename(@newpassword, '''') + ' OLD_PASSWORD= ' + quotename(@oldpassword, '''')
EXEC(@SQLString )

END
 
Zurück
Oben