MSSQL create user JDBC

MSSQL create user JDBC
2012-09-27T20:09:26+02:00
2012-09-27T21:03:29+02:00
2022-11-26T23:50:40+01:00
sth
Sziasztok

Van egy java alkalmazásom aminek user-t kellene felvenni egy MSSQL szerverre több adatbázisba JDBC-vel.
Ehhez megvan a userem jogokkal, de tárolt eljárást nem írhatok.

A scriptet is megcsináltam
Először belépek a userrel bekerülök a master adatbázisba.
Create login ...
Innentől viszont minden adatbázisba
use adatbázis
create user ...
sp_addrolemember ...
Ezt annyiszor meg kell ismételnem ahány adatbázisba fel kell vennem, ehhez viszont minden adatbázishoz külön be kell connectálni.
Van erre valami egyszerűbb mód?
pl a create user és sp.addrolmember-nek megmondani, hogy melyik adatbázisba hozza létre a usert, vagy valami más, hogy ne kelljen minden adatbázishoz JDBC-vel bejelentkezni?

sth
Mutasd a teljes hozzászólást!
Igen van, az undocumented sp_msforeachdb.
Itt egy példa a használatra, a NOT IN helyett IN-t is használhatsz:

USE [master] GO CREATE LOGIN [teszt_user] WITH PASSWORD=N'123456', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO EXEC sp_msforeachdb @command1 = 'IF ''?'' NOT IN (''master'', ''msdb'', ''model'', ''tempdb'') BEGIN USE [?]; CREATE USER [teszt_user] FOR LOGIN [teszt_user]; EXEC sp_addrolemember N''db_datareader'', N''teszt_user'' END';
Mutasd a teljes hozzászólást!

  • nem vagyok benne biztos, hogy működik, de

    create user ...
    use db1
    sp_addrolemember
    use db2
    sp_addrolemember
    Mutasd a teljes hozzászólást!
  • Ezt értem, de ilyenkor mikor kiadom a use db1 v. use db2-t akkor nem kell külön JDBC connection-t csinálnom db1-hez és db2-hez? Mert ezt szeretném elkerülni
    Esetleg ezt a scriptet át lehet adni egy scrigben? JDBC-n?
    Mutasd a teljes hozzászólást!
  • Igen van, az undocumented sp_msforeachdb.
    Itt egy példa a használatra, a NOT IN helyett IN-t is használhatsz:

    USE [master] GO CREATE LOGIN [teszt_user] WITH PASSWORD=N'123456', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO EXEC sp_msforeachdb @command1 = 'IF ''?'' NOT IN (''master'', ''msdb'', ''model'', ''tempdb'') BEGIN USE [?]; CREATE USER [teszt_user] FOR LOGIN [teszt_user]; EXEC sp_addrolemember N''db_datareader'', N''teszt_user'' END';
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd