2

次のスクリプトがあります。SQL Server 2005 で新しいデータベースを作成する方法がわかりません。次のスクリプトを実行すると、別のデータベースではなくモデルの下にテーブルが作成されます。それは塊に見えます。

別のデータベースを作成するにはどうすればよいですか。あなたの支援と行動方針のために、ここにいくつかのスクリプトをコピーします。

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

5 に答える 5

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

スクリプト内のこのコードは、新しいデータベースを作成する必要があります。プロセスでエラーが発生しない場合。

于 2009-11-05T15:19:37.930 に答える
1

単純化できますか?または、そのすべてのチェックを行う必要がありますか?

簡略化できる場合は、次のようなコードを使用します。

CREATE DATABASE OBXKites

USE OBXKites

CREATE TABLE OrderPriority(syntax)

このような単純なコードが機能しない場合は、権利やファイル、または私の直前のqueen3によって提案された何かに関するより深刻な問題が発生している可能性があります。

後付け:私の学校でもこのような問題が発生していたと思います...いくつかのクラスの後、ラボコンピュータのプログラムファイルディレクトリにファイルを追加する権利がなく、SQLがなかったという結論に達しました。エラーを報告していません。

于 2009-11-05T15:18:19.283 に答える
0

出力にエラーはありますか?スクリプト自体は、要求したことをすでに実行しています。

ファイル名を間違って指定したのではないかと思います。ファイル名の一部はドライブC:にあり、一部はドライブD:にあります。

于 2009-11-05T15:17:19.167 に答える
0

問題のスクリプトは、OBXKitesデータベースにテーブルを作成します(スクリプトのUSE OBXKitesステートメントを参照してください)。

OBXKitesデータベースはサーバーインスタンスにすでに存在しますか?もしそうなら、スクリプトがOBXKitesデータベースを効果的に削除して再作成しているので、おそらくそれが現在のデータベースにテーブルを作成しているように見える理由です。データベースに別の名前が必要な場合は、上記のスクリプトで「これにより2つのファイルグループを使用する1つのデータベースが作成されます」という行の後にある「OBXKites」のすべてのインスタンスを見つけて、目的の新しいデータベース名に名前を変更します。

他の唯一のオプションは、ユーザーアカウントにデータベースの作成に適切な権限がない場合に、スクリプトでデータベースの作成中に実行エラーが発生することです。ただし、スクリプトは引き続き実行され、ログインしている現在のデータベースにテーブルが作成されます。そのため、そこにテーブルが表示されます。

于 2009-11-05T15:18:03.497 に答える