2009-11-05 5 views
2

J'ai le script suivant. Je ne sais pas comment créer une nouvelle base de données dans SQL Server 2005. Je cours suivant scirpt, et il crée des tables sous le modèle au lieu de séparer la base de données. ça a l'air massif.script sql pour créer une nouvelle base de données

comment puis-je créer une base de données séparée. Je suis copier un script ici pour votre adive et le cours de l'action.

----------------------------------------------------------- 
-- SQL Server 2000 Bible 
-- Hungry Minds 
-- Paul Nielsen 

-- OBX Kites sample database - CREATE Database, Tables, and Procs 

-- this script will drop an existing OBXKites database 
-- and create a fresh new installation 

-- related scripts: 
-- OBXKites_Populate 

-- T-SQL KEYWORDS go 
-- DatabaseNames 

----------------------------------------------------------- 
----------------------------------------------------------- 
-- Drop and Create Database 


USE master 
GO 
IF EXISTS (SELECT * FROM SysDatabases WHERE NAME='OBXKites') 
    DROP DATABASE OBXKites 
go 

-- This creates 1 database that uses 2 filegroups 
CREATE DATABASE OBXKites 
    ON PRIMARY 
    (NAME = 'OBXKites', FILENAME = 'D:\SQLData\OBXKites.mdf'), 
    FILEGROUP Static 
    (NAME = 'OBXKitesStatic', FILENAME = 'c:\SQLData\OBXKitesStatic.ndf') 
    LOG ON (NAME = 'OBXKitesLog', FILENAME = 'c:\SQLData\OBXKites.ldf') 
go 

-- set to Full Log 

go 

SET QUOTED_IDENTIFIER ON 
go 
USE OBXKites 
go 

----------------------------------------------------------- 
----------------------------------------------------------- 
-- Create Tables, in order from primary to secondary 

CREATE TABLE dbo.OrderPriority (
    OrderPriorityID UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL DEFAULT (NEWID()) PRIMARY KEY NONCLUSTERED, 
    OrderPriorityName NVARCHAR (15) NOT NULL, 
    OrderPriorityCode NVARCHAR (15) NOT NULL, 
    Priority INT NOT NULL 
) 
    ON [Static] 
go 
+1

Qui a voté? pour quels motifs? Les développeurs travaillent avec les technologies SQL tout le temps. – Jrud

Répondre

5
CREATE DATABASE OBXKites 
ON PRIMARY 
    (NAME = 'OBXKites', FILENAME = 'D:\SQLData\OBXKites.mdf'), 
    FILEGROUP Static 
    (NAME = 'OBXKitesStatic', FILENAME = 'c:\SQLData\OBXKitesStatic.ndf') 
LOG ON 
    (NAME = 'OBXKitesLog', FILENAME = 'c:\SQLData\OBXKites.ldf') 
go 

Ce code dans votre script devrait créer une nouvelle base de données. Si aucune erreur ne se produit dans le processus.

+0

Je comprends. pouvez-vous également m'expliquer la chose du nom de fichier dans le script ci-dessus. –

+0

Ceci indique au serveur SQL où trouver les fichiers de la base de données. Dans ce cas, il crée deux fichiers de base de données pour les données et un pour les journaux (transactions). Habituellement, il n'y aura que 2 fichiers pour les bases de données de petite et moyenne taille. Vous pouvez supprimer ce morceau de code et les fichiers seront alocalisés dans le répertoire par défaut du serveur. Vous pouvez déplacer ces fichiers plus tard si vous le souhaitez. Dans votre code, cela ne fonctionnera qu'avec la première phrase que j'ai citée. –

+0

Mais quel est le problème avec créer une table. Je reçois toujours une erreur de groupe de fichiers. –

0

Y a-t-il des erreurs dans la sortie? Le script lui-même fait déjà ce que vous avez demandé.

Je suppose que vous avez mal spécifié les noms de fichiers - certains d'entre eux sont sur le lecteur C :, et certains sur le lecteur D :.

0

Votre script en question va créer les tables de la base de données OBXKites (voir l'instruction USE OBXKites dans votre script)

Est-ce que la base de données OBXKites existe déjà dans votre instance de serveur? Si c'est le cas, c'est probablement la raison pour laquelle il semble que ce soit la création des tables dans la base de données en cours, puisque le script supprime et recréé efficacement la base de données OBXKites. Si vous avez besoin d'un nom différent pour la base de données, trouvez toutes les occurrences de "OBXKites" dans votre script ci-dessus après la ligne "Ceci crée une base de données qui utilise 2 groupes de fichiers" et renommez le nouveau nom de base de données souhaité. La seule autre option peut être que le script a des erreurs d'exécution lors de la création de la base de données, si votre compte d'utilisateur ne dispose pas des autorisations nécessaires pour le faire. Toutefois, le script continue à s'exécuter en créant les tables dans la base de données en cours à laquelle vous êtes connecté. C'est la raison pour laquelle vous voyez les tables.

1

Pouvez-vous simplifier? ou devez-vous faire tout ce contrôle?

Si elle peut être simplifiée je beileve un code tel que:

CREATE DATABASE OBXKites 

USE OBXKites 

CREATE TABLE OrderPriority(syntax) 

Si le code simple comme cela ne fonctionne pas, vous pouvez avoir des problèmes plus profonds avec des droits ou des fichiers ou quelque chose comme suggéré par Reine3 juste avant moi. Après réflexion: À mon école, nous avions des problèmes comme celui-ci, je crois ... après quelques cours, nous sommes finalement arrivés à la conclusion que nous n'avions pas le droit d'ajouter des fichiers dans le répertoire des fichiers du programme. ordinateurs et SQL ne nous a pas signalé l'erreur.

Questions connexes