MS SQL - CREATE DATABASE default locations-ra

MS SQL - CREATE DATABASE default locations-ra
2011-11-05T12:26:53+01:00
2011-11-11T09:34:35+01:00
2022-11-23T16:00:38+01:00
Wowbagger78
Sziasztok!

SQL Server 2008 Express-t használok.

A szervert futtató gépen engedélyezve lett a TCP/IP és a Named Pipes is.

Szervert futtató gépen átállítottam a Database default locations-t (Data és Log) "D:\SQLAdat"-ra. Instance name: SQLSERVER.

(Átállítás menete:
Managament Studio-ban jobb klikk instance-on majd Properties => Database Settings)

Másik, hálózatba kötött gépen csatlakozok SQL Server Managament Studio-val <SERVERGÉPNÉV>\SQLSERVER instance-hoz. Csatlakozás sikeres.

Akármelyik gépen futtatom a

CREATE DATABASE ProbaDB

SQL kódot a default locations beállítástól függetlenül a
"C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA" elérési útra kreálja meg az adatbázist.

Ellenben, ha a Management Studio-ban a "New Database..."-ra kattintok akkor ott már a Path a default ("D:\SQLAdat") mappát ajánlja fel.

Az SQL Server Configuration Manager-ben újraindítottam az SQL Servert és az SQL Server Browsert is (jobbklikk és Restart), hogy biztosan a megadott defaulttal fusson.

Mit rontok el? (Gondolom azt jól feltételezem, hogy a kliens gépen kiadott CREATE DATABASE-nek nem kell tudnia a fájlok valós helyét így azt meg sem kell adnom.)

Köszönöm a válaszokat.

W.
Mutasd a teljes hozzászólást!
USE [master] GO --Data file EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'Location' GO -- Log file EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'Location' GO

Eszmefuttatás
Mutasd a teljes hozzászólást!

  • SQL kódot a default locations beállítástól függetlenül a
    "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA" elérési útra kreálja meg az adatbázist

    Jogos, mert ez van a registry-ben (install alapján).
    A progid nem tudja mit állítotál default-nak a Management Studio-ban, az csak a Management Studio info-ja.
    Egyébként szvsz az adatbázist kódból ritkán kreálják, töbnyire a grafikus segédlettel, majd annak script-jét - ha kívánod - már könnyedén módosíthatod, s futtathatod.
    Mutasd a teljes hozzászólást!
  • És a servernek nem lehet megadni globálisan egy default directoryt? Csak mert nagyon nem szeretném, ha az adatok közül bármi is a C:-re kerülne. Erre lenne egy külön meghajtó.

    Vagy miképpen szokott ez történni?

    Ha futtatom a scriptet (amit előtte összerakosgattam a Managament Studioval) az egyik kliensgépen, akkor az honnan fogja tudni, hogy a szervergépen melyik könyvtárba kerüljön?

    Vagyis a szerver nyilván tudja, hogy a CREATE DATABASE esetén hova rakja majd az új DB-t, mertugye valahonnan csak jön ez az info a szerveren...

    Miképpen tudom módosítani?

    W.
    Mutasd a teljes hozzászólást!
  • amit előtte összerakosgattam a Managament Studioval
    és módosítottad a megfelelő elérési útra.
    Pl.

    USE [master] GO /****** Object: Database [Northwind] Script Date: 11/05/2011 16:06:54 ******/ CREATE DATABASE [Northwind] ON PRIMARY ( NAME = N'Northwind', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.V72K8\MSSQL\DATA\Northwind.mdf' , SIZE = 5504KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'Northwind_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.V72K8\MSSQL\DATA\Northwind_Log.ldf' , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%) GO ALTER DATABASE [Northwind] SET COMPATIBILITY_LEVEL = 90 GO IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin EXEC [Northwind].[dbo].[sp_fulltext_database] @action = 'enable' end GO . .

    Vagyis a szerver nyilván tudja, hogy a CREATE DATABASE esetén hova rakja majd az új DB-t, mertugye valahonnan csak jön ez az info a szerveren...

    Hogyne tudná.
    Mint már írtam, a registry-ben rögzült az (sql server) install során.
    Mutasd a teljes hozzászólást!
  • Szia!

    Ez a mintakód így tiszta, de gondolom ez csak a server gépen fut le normálisan.

    Akkor a lépések a következők (ahogyan értelmezem a szavaid alapján):

    1. Telepítem a SQL Servert a szerver gépen.
    2. Regedit-tel megkeresem az adott kulcsot és lecserélem arra amit használni akarok (pl. "Q:\SQLAdat"). Milyen kulcson van az elérési út eltárolva?
    3. Futtatom a SQL kódot a kliens gépről a fejlesztett program első indulása alkalmával.

    A Te általad példának hozott kód nem csak a server gépről futtatva állítja elő a helyes DB-t? Hisz abszolút elérési utakat adsz meg (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.V72K8\MSSQL\DATA\Northwind.mdf') amik ugye a kliens gépen nem is léteznek.

    Az mondjuk más kérdés, hogy az adatbázis mentése és vissza állítása már az üzemeltető/megrendelő dolga így az ő felelőssége az is, ha a C: meghajtón akarja tartani az adatait.

    Nyilván egy fejlesztett program meg úgy korrekt, hogy ahhoz csinálunk egy adatmentő/visszaállító modult (BACKUP/RESTORE).

    W.



    Mutasd a teljes hozzászólást!
  • Az mondjuk más kérdés, hogy az adatbázis mentése és vissza állítása már az üzemeltető/megrendelő dolga

    Igen, de akkor minek gyötrődsz a helyi adatbázis generálással?
    Miért nem hozod létre a progid mellé, s küldöd a user-nek, hogy tegye ahova akarja.
    Néki mindenképp regisztráltania kell a serverel, így az elérés a progidból nem lesz gond.
    Sőt, ha egyfelhasználós a progid, akkor mellette is maradhat az adatbázis.
    Mutasd a teljes hozzászólást!
  • USE [master] GO --Data file EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'Location' GO -- Log file EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'Location' GO

    Eszmefuttatás
    Mutasd a teljes hozzászólást!
  • Üdv!

    Riha, halivud: köszönöm a válaszokat. Megvilágosodtam (Legalábbis remélem...)

    Ezekből azt szűrtem le, hogy:

    1. Van a programom amit felrakok a kliensekre. (ClickOnce Deployment ???? + SQL Server Client)
    2. Van az adatbázisom (*.mdf) amit odaadok a felhasználónak, hogy regisztrálja be az SQL serverébe (Attach a Managament Studio-val). (Ha nincsen SQL server akkor előtte telepítse a szintén a program mellé mellékelt SQL Server 2008 Express-t)
    3. Az adatok elhelyezése, mentése a felhasználó, adatgazda dolga és nekem csak és kizárólag azzal kell foglalkoznom, hogy kapjak egy "gépnév (vagy IP cím) / Instancename"-et ami a használandó SQL servert jelöli.
    4. Esetleg tehetek javaslatot, hogy állítsa át az adatok helyét a szervergépen (mondjuk halivud által megadott lehetőséget használva)
    5. A kapott SQL server elérést használom a csatlakozásra.

    Jól gondolom vagy valamit kihagytam?

    W.

    Mutasd a teljes hozzászólást!
  • 1. Van a programom amit felrakok a kliensekre. (ClickOnce Deployment ???? + SQL Server Client)
    2. Van az adatbázisom (*.mdf) amit odaadok a felhasználónak, hogy regisztrálja be az SQL serverébe (Attach a Managament Studio-val).

    Egyszerűbb, ha nem adod oda, hanem integrálod az alkalmazásodba.
    Így az megy a clickonce csomagban.
    Neki csak azt kell biztosítani, hogy legyen elérhető SQL server a gépén, vagy a környezetében.
    Mutasd a teljes hozzászólást!
  • Tehát "integrálom" a telepítőbe majd a felhasználó a telepített *.mdf-et felmásolja (Attach-olja) oda ahova szeretné. Rájt?

    Vagy a
    integrálod az alkalmazásodba
    nem ezt jelenti? Ha nem akkor mit és hogyan megy az "integrálás"?

    W.

    Mutasd a teljes hozzászólást!
  • Ilyesmire gondoltam..(ClickOnce (Visual Studio 2005))

    To create a WinForm that displays the Department table: Launch Visual Studio. Create a new Windows Application project. When the Form1 Designer opens, add a reference to the AdventureWorks database. Right click the Project node in the Solution Explorer pane, and then select both Add and Existing Item. Navigate to the AdventureWorks database and click OK. The Data Source Configuration Wizard opens. . . Olvasd tovább..
    Mutasd a teljes hozzászólást!
  • Köszönöm!

    Tanulmányozom.

    A pont kérdésében nehéz a döntés, mert mindketten sokat segítettetek. Legszívesebben mindkettőtöknek adnék pontot.

    halivud adott konkrét kódot a problémámra ezért úgy érzem Őt illeti a pont.

    Riha Úr! Neked ismét köszönöm a fejlődésemet szolgáló, hasznos hozzászólásokat:)

    Tisztelettel:
    W.
    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