Problem ze scryptem bazy CanaryAirlines w MS SQL i Oracle przykladwej bazy dla ksiazki SQL w 24 godziny

0

Hej,

Zaczynam swoja przygodę z SQLem dla tego w celach treningowych zakupiłem książkę SQL w 24h gdzie jest duzo praktycznych zadań i ćwiczeń. W tym celu chciałem zainstalować sobie ta bazę w obu aplikacjach (MSSS i Oracle). Mimo ze autor podał załączył link do ściągnięcia skryptów do bazy MSSS or Oracle oba skrypty nie da się runnowac gdyż skutkuje to to errorami i bazy w obu aplikacja nie powstają. Czy ktoś z doświadczonych kolegów byłby w stanie spojrzeć w kod i ewentualnie doradzić jak go umiejętnie zmodyfikować lub co zrobić żeby udało mi się postawić ta bazę w obu aplikacjach. Poniżej załączam link do strony wydawcy Helion gdzie autor zamieścił plik zip z oboma skryptami.

ftp://ftp.helion.pl/przyklady/sqlw24.zip

0
  1. popraw link
  2. nie MSSS tylko MSSQL
  3. na przyszłość JAKIE BŁĘDY
1

Nie napisałeś jaki błąd, ale skoro bazy się nie tworzą to, problemem będzie ta część:

CREATE DATABASE [CanaryAirlines] ON  PRIMARY 
( NAME = N'CanaryAirlines', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\CanaryAirlines.mdf' , SIZE = 69632KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'CanaryAirlines_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\CanaryAirlines_log.ldf' , SIZE = 901312KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

a dokładnie ścieżka do pliku mdf/ldf: C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\

zanim rozpoczniesz puszczenie skryptu puść taki:

IF EXISTS(SELECT 1 FROM [master].[sys].[databases] WHERE [name] = 'zzTempDBForDefaultPath')   
BEGIN  
    DROP DATABASE zzTempDBForDefaultPath   
END; 
-- Create temp database. Because no options are given, the default data and --- log path locations are used 
CREATE DATABASE zzTempDBForDefaultPath; 
--Declare variables for creating temp database   
DECLARE @Default_Data_Path VARCHAR(512),   
        @Default_Log_Path VARCHAR(512); 
--Get the default data path   
SELECT @Default_Data_Path =    
(   SELECT LEFT(physical_name,LEN(physical_name)-CHARINDEX('\',REVERSE(physical_name))+1) 
    FROM sys.master_files mf   
    INNER JOIN sys.[databases] d   
    ON mf.[database_id] = d.[database_id]   
    WHERE d.[name] = 'zzTempDBForDefaultPath' AND type = 0); 
--Get the default Log path   
SELECT @Default_Log_Path =    
(   SELECT LEFT(physical_name,LEN(physical_name)-CHARINDEX('\',REVERSE(physical_name))+1)   
    FROM sys.master_files mf   
    INNER JOIN sys.[databases] d   
    ON mf.[database_id] = d.[database_id]   
    WHERE d.[name] = 'zzTempDBForDefaultPath' AND type = 1); 
--Clean up. Drop de temp database 
IF EXISTS(SELECT 1 FROM [master].[sys].[databases] WHERE [name] = 'zzTempDBForDefaultPath')   
BEGIN  
    DROP DATABASE zzTempDBForDefaultPath   
END; 
PRINT    @Default_Data_Path;   
PRINT    @Default_Log_Path;

Ten skrypt zwróci w wyniku ścieżkę do folderu danych (1 linijka i ścieżkę do folderu logów (2 linijka).
Podmień C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\ to co zwróci powyższy skrypt i powinno zadziałać dla MSSQL

0

Ale przecież całą tę komendę może zamienić na proste CREATE DATABASE CanaryAirlines. Reszta jest niepotrzebna dla początkującego.

0

Hej, najpierw wykorzystałem komendę CREATE DATABASE CanaryAirlines i baza mi się pojawiła tylko zastanawia mnie fakt czemu nie jestem w stanie wyświetlić żadnych tabel ani ich odpytać. Zakładam ze powinny być widoczne w folderze tables? Czy powinienem usunąć ta bazę i następnie na nowo spróbować tylko z pierwszym rozwiązaniem gdzie mam sprawdzić te ścieżki najpierw. Z góry dzięki wszystkim za pomoc.

0

Po założeniu bazy, a przed stworzeniem tabel, powinieneś "przełączyć" sie na te bazę.
use CanaryAirlines

0
Marcin.Miga napisał(a):

Po założeniu bazy, a przed stworzeniem tabel, powinieneś "przełączyć" sie na te bazę.
use CanaryAirlines

Marcin i ile dobrze rozumiem to autor i ta przykładowa baza powinna juz mieć stworzone tabele na których miałbym wykonywać ćwiczenia. Myślałem ze skrypt zawiera juz konkretne tabele z danymi. Czy to oznacza ten skrypt to jakby szkielet bazy bez tabel?

0

Linijkę tworzącą bazę, która podał Marcin tworzy tylko bazę bez żadnych tabel i rekordów.
To co podesłałeś tworzy Ci bazę + tabelkę i czymś tam jeszcze uzupełnia to wszystko.

Czyli najprościej puść najpierw linijkę kodu podesłaną przez Marcina tworzącą bazę, a później ten skrypt z książki i powinno zadziałać

1 użytkowników online, w tym zalogowanych: 0, gości: 1