2009-11-05 2 views
2

У меня есть следующий скрипт. Я не знаю, как создать новую базу данных в sql server 2005. Я запускаю следующую зачистку и создаю таблицы под моделью вместо отдельной базы данных. он выглядит массивным.sql script для создания новой базы данных

Как я могу создать отдельный файл данных. Я скопирую здесь какой-то сценарий для вашего adive и курса действий.

----------------------------------------------------------- 
-- 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

Кто проголосовал за это? на каких основаниях? Разработчики постоянно работают с SQL-технологиями. – Jrud

ответ

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 

Этот код в вашем скрипте должен создать новую базу данных. Если в процессе не возникает ошибки.

+0

Я понимаю. Можете ли вы также объяснить мне имя файла в приведенном выше сценарии. –

+0

Это говорит серверу sql, где можно найти файлы базы данных. В этом случае он создает два файла базы данных для данных, один для журнала (транзакции). Обычно для малогабаритных баз данных будет всего 2 файла. Вы можете удалить этот фрагмент кода, и файлы будут размещены в каталоге по умолчанию для сервера. Вы можете переместить эти файлы позже, если хотите. В вашем коде он будет работать только с первым предложением, которое я цитировал. –

+0

Но что такое проблема с созданием таблицы. Я все еще получаю ошибку файловой группы. –

0

Есть ли ошибки в выходе? Сам скрипт уже делает то, что вы просили.

Я подозреваю, что вы неправильно указали имена файлов - некоторые из них находятся на диске C :, а некоторые на диске D :.

0

Ваш сценарий в вопросе создаст таблицы в базе данных OBXKites (см оператор USE OBXKites в сценарии)

уже существует база данных OBXKites в вашем экземпляре сервера? Если это так, то, вероятно, поэтому кажется, что он создает таблицы в текущей базе данных, так как сценарий эффективно удаляет и воссоздает базу данных OBXKites. Если вам нужно другое имя для базы данных, найдите все экземпляры «OBXKites» в вашем сценарии выше после строки, которая читает «Это создает 1 базу данных, которая использует 2 группы файлов», и переименуйте ее в новое имя базы данных, которое вы желаете.

Единственный другой вариант может заключаться в том, что сценарий имеет ошибки выполнения, создающие базу данных, если ваша учетная запись пользователя не имеет надлежащих разрешений для этого. Однако сценарий продолжает выполняться, создавая таблицы в текущей базе данных, в которую вы вошли, поэтому вы видите таблицы там.

1

Можете ли вы упростить его? или вам нужно все это проверить?

Если это может быть упрощена я beileve некоторый код, такой как:

CREATE DATABASE OBXKites 

USE OBXKites 

CREATE TABLE OrderPriority(syntax) 

Если простой код, как это не работает, вы можете иметь более глубокие проблемы с правами или файлы или что-то, как было предложено queen3 непосредственно перед меня.

Последующая мысль: В моей школе у ​​нас были такие проблемы, как я полагаю ... после нескольких классов мы, наконец, пришли к выводу, что у нас не было прав на добавление файлов в каталог файлов программ в лаборатории компьютеры и SQL не сообщали нам об ошибке.