/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Variabler i SQL-script SQL2005
Fra : Brian Sprogø


Dato : 18-01-08 11:27

Hejsa,

Jeg har vist fået stirret mig blind på en simpel lille ting...

Har lavet et script til oprettelse af brugere på en SQL2005 - og det
virker efter hensigten.

For at gøre processen lidt lettere, ville jeg gerne lave et par variable
øverst, så man f.eks. kun skulle indtaste oplysningen omkring brugernavn
en enkelt gang istedet for 3 gange.

Mit script ser ud som følger:

USE [master]
GO
DECLARE @brugernavn as char(50)
DECLARE @password as char(50)

set @brugernavn = 'testbruger'
set @password = N'testpassword'

select @brugernavn
select @password

CREATE LOGIN @brugernavn WITH PASSWORD= @password,
DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=ON, CHECK_POLICY=ON

USE [testbase]

CREATE USER @brugernavn FOR LOGIN @brugernavn
GO


De 2 select-sætninger er for at kontrollere at indholdet af variablen er ok.

Scriptet fejler i linien omkring 'CREATE LOGIN...' med følgende fejl:

Msg 102, Level 15, State 1, Line 10
Incorrect syntax near '@brugernavn'.
Msg 319, Level 15, State 1, Line 10
Incorrect syntax near the keyword 'with'. If this statement is a common
table expression or an xmlnamespaces clause, the previous statement must
be terminated with a semicolon.
Msg 102, Level 15, State 1, Line 14
Incorrect syntax near '@brugernavn'.

Hvorledes får jeg scriptet til at gøre som jeg vil... ?

Mvh.

Brian

 
 
Brian Sprogø (22-01-2008)
Kommentar
Fra : Brian Sprogø


Dato : 22-01-08 09:52

Hejsa,

Så fik jeg strikket noget sammen der virker - det lader til at man ikke
kan bruge variabler i alle kommandoer - uden en omvej i hvertfald.

Så det endte med at se således ud:

USE [master]
GO
DECLARE @brugernavn as char(50)
DECLARE @password as char(50)
DECLARE @SqlStatement nvarchar(MAX);

set @brugernavn = 'testbruger'
set @password = N'testpassword'

SET @SqlStatement =
N'CREATE LOGIN ' +
QUOTENAME(@brugernavn) +
N' WITH PASSWORD = ' +
QUOTENAME(@password, '''') +
N', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=ON, CHECK_POLICY=ON ';

EXECUTE (@SqlStatement);

use [testbase]

SET @SqlStatement =
N'CREATE USER ' +
QUOTENAME(@brugernavn) +
N' FOR LOGIN ' +
QUOTENAME(@brugernavn)

EXECUTE (@SqlStatement);
GO

Mvh.

Brian

Brian Sprogø skrev:
> Hejsa,
>
> Jeg har vist fået stirret mig blind på en simpel lille ting...
>
> Har lavet et script til oprettelse af brugere på en SQL2005 - og det
> virker efter hensigten.
>
> For at gøre processen lidt lettere, ville jeg gerne lave et par variable
> øverst, så man f.eks. kun skulle indtaste oplysningen omkring brugernavn
> en enkelt gang istedet for 3 gange.
>
> Mit script ser ud som følger:
>
> USE [master]
> GO
> DECLARE @brugernavn as char(50)
> DECLARE @password as char(50)
>
> set @brugernavn = 'testbruger'
> set @password = N'testpassword'
>
> select @brugernavn
> select @password
>
> CREATE LOGIN @brugernavn WITH PASSWORD= @password,
> DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english],
> CHECK_EXPIRATION=ON, CHECK_POLICY=ON
>
> USE [testbase]
>
> CREATE USER @brugernavn FOR LOGIN @brugernavn
> GO
>
>
> De 2 select-sætninger er for at kontrollere at indholdet af variablen er
> ok.
>
> Scriptet fejler i linien omkring 'CREATE LOGIN...' med følgende fejl:
>
> Msg 102, Level 15, State 1, Line 10
> Incorrect syntax near '@brugernavn'.
> Msg 319, Level 15, State 1, Line 10
> Incorrect syntax near the keyword 'with'. If this statement is a common
> table expression or an xmlnamespaces clause, the previous statement must
> be terminated with a semicolon.
> Msg 102, Level 15, State 1, Line 14
> Incorrect syntax near '@brugernavn'.
>
> Hvorledes får jeg scriptet til at gøre som jeg vil... ?
>
> Mvh.
>
> Brian

Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407948
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste