[SQL 2005] Scripting

Pagina: 1
Acties:

  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
Ik wil een script maken, waarbij ik een volledig DB script maak.

Wat ik wil is een stappenplan:

1 Create User (done)
2 Create DB
3 Create Tables
4 Create SP's
5 Create Basic data

Maar nu heb ik 2 vragen:

1 Waarom staat er in het DB Create script: EXEC [DBNAME].[dbo].[sp_fulltext_database] @action = 'disable'. Wat is dat @action = 'disable'. Heb al gegoogled, maar kon helaas niks vinden.

2 Als ik tabellen wil aanmaken met een script, kan ik daar dan ook gelijk (liefst met hetzelfde script) rechten aan hangen? Dan wil ik de User van stap 1 rechten geven op de tabellen, of op de DB (Data Reader/Writer, rechten op Views en SP's).

Weet dat hier een hoop wijzen rondzwerven, dus moet toch wel iemand zijn die dit weet :*)

  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 21:01
als ik me niet vergis kun je dit allemaal in 2005, door 'script table' te kiezen. (en deze in de script export van je DB te zetten)

is een tijdje geleden dat ik het heb gedaan hoor..

you had me at EHLO


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Dat stukje code zegt het toch zelf ?
De stored procedure sp_fulltext_database wordt opgeroepen, en er wordt als parameter 'disable' meegegeven.

2: ja dat kan toch ? Kijk eens naar de GRANT / DENY statements.

https://fgheysels.github.io/


  • arnob
  • Registratie: Juli 2000
  • Niet online
>@action = 'disable'
property instellen. De meeste database opties gaan via sp_dboptions maar de full text engine moet ook een init doen. Deze gaat dus apart.

Over rechten, in de help vind je de verschillende soorten terug. rollen aanmaken, dbusers aanmaken, rechten geven (grant).
Natuurlijk kan dat in een script. Misschien dat je nog wel een 'GO' moet geven na het aanmaken van een DB voordat je rollen enzo kan aanmaken maar dat moet je maar even proberen.

  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
Damn... talk about quick reactions :P

Ik ga hier even naar kijken. En als je in je script rechten kan geven, kan dat dus ook met een variabele neem ik aan. Dat maakt het allemaal nog dynamischer natuurlijk :D

  • arnob
  • Registratie: Juli 2000
  • Niet online
Acid__Burn schreef op dinsdag 03 juli 2007 @ 10:57:
En als je in je script rechten kan geven, kan dat dus ook met een variabele neem ik aan. Dat maakt het allemaal nog dynamischer natuurlijk :D
Ik gebruik liever een script om een script aan te maken dan een dynamisch gebeuren in een create/rechten script.
Ik kan niet precies zeggen waarom ik dat doe. 8)7 Het was me nooit de moeite waard denk ik om een dergelijk script zelf dynamisch te maken.

  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 21-11 18:08
@arnob:
Heb je daar ook een voorbeeld van? Zou graag zien hoe jij dat doet :D.

Als je het niet kan/wil posten, kan je altijd mailen of PM o.i.d. ;)

  • arnob
  • Registratie: Juli 2000
  • Niet online
hier een stukje code wat ik zo snel ergens vond, niet door mij geschreven maar het is de werkwijze die ik bedoel. schande, ik weet de bron of auteur niet meer van de code auteur: Chad Boyd, link
(SQL2005 only)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
select 'create login [' + p.name + '] ' + 
    case when p.type in('U','G') then 'from windows ' 
     else '' 
     end 
    + 'with ' +
    case when p.type = 'S' then 'password = ' + master.sys.fn_varbintohexstr(l.password_hash) + 
     ' hashed, ' + 'sid = ' + master.sys.fn_varbintohexstr(l.sid) + ', check_expiration = ' +
     case when l.is_policy_checked > 0 then 'ON, ' 
      else 'OFF, ' 
      end 
     + 'check_policy = ' + 
     case when l.is_expiration_checked > 0 then 'ON, ' 
      else 'OFF, ' 
      end 
     +
     case when l.credential_id > 0 then 'credential = ' + c.name + ', ' 
      else '' 
      end 
    else '' 
    end 
    +
    'default_database = ' + p.default_database_name +
    case when len(p.default_language_name) > 0 then ', default_language = ' + p.default_language_name 
     else '' 
     end
from 
    sys.server_principals p
    left join sys.sql_logins l
        on p.principal_id = l.principal_id
    left join sys.credentials c
        on l.credential_id = c.credential_id
where 
    p.type in('S','U','G')
    and 
    p.name <> 'sa'

resultaat:
code:
1
2
create login [BUILTIN\Administrators] from windows with default_database = master, default_language = us_english
create login [NT AUTHORITY\SYSTEM] from windows with default_database = master, default_language = us_english
Pagina: 1