2010-07-30 37 views
10

Xin lỗi nếu đã được hỏi, nhưng tôi không thể tìm thấy bất cứ điều gì về điều này.SQL - tạo cơ sở dữ liệu và các bảng trong một tập lệnh

Tôi đang di chuyển thứ gì đó từ MySQL sang SQL Server Tôi muốn có tệp .sql tạo cơ sở dữ liệu và bảng trong cơ sở dữ liệu. Sau khi làm việc ra cú pháp kinks tôi đã nhận được các tập tin để làm việc (gần như).

Nếu tôi chạy

IF db_id('dbname') IS NULL 
    CREATE DATABASE dbname 

nó hoạt động tốt, và nếu tôi chạy

CREATE TABLE dbname.dbo.TABLE1 (
); 
... 
CREATE TABLE dbname.dbo.TABLEN (
); 

nó cũng hoạt động tốt. Nhưng, nếu tôi chạy chúng trong cùng một tập tin tôi nhận được lỗi này

Database 'dbname' does not exist 

Ngay bây giờ, CREATE TABLE tuyên bố không nằm trong báo cáo kết quả NẾU, mà tôi muốn, nhưng tôi cũng dường như không thể tìm ra cú pháp cho cái đó. ({} không hoạt động?)

Vì vậy, câu hỏi lớn của tôi là, làm cách nào để đảm bảo một lệnh cụ thể trong tệp .sql được hoàn thành trước một lệnh khác trong SQL Server?

Câu hỏi thứ hai của tôi là, làm cách nào để bao gồm nhiều hướng dẫn trong mệnh đề IF?

Để rõ ràng, tôi đã chạy điều này vào sqlcmd.

+3

Các câu lệnh này không được thực thi song song, vì vậy bạn có thể muốn sửa đổi tiêu đề của mình. –

Trả lời

17

Đặt lệnh GO giữa các truy vấn.

IF db_id('dbname') IS NULL 
    CREATE DATABASE dbname 

GO 

CREATE TABLE dbname.dbo.TABLE1 ( 
); 

CREATE TABLE dbname.dbo.TABLEN ( 
); 

Để đưa các câu lệnh bảng vào IF, bạn sẽ không thể thực hiện được lệnh GO. Bạn có thể tạo các câu lệnh IF bổ sung sau đó, để kiểm tra cho mỗi bảng trước khi tồn tại.

Cú pháp cho một khối nếu là:

IF condition 
BEGIN 
    .... 
    .... 
END 
1

Bằng cách đặt một GO giữa báo cáo (để tạo ra lô riêng biệt của báo cáo)

0

Bạn cần phải tách các báo cáo với từ khóa GO:

sql query 
GO 

another sql query 
GO 

and so on 
4

Giữa việc tạo cơ sở dữ liệu và tạo bảng, bạn sẽ cần báo cáo USE.

USE dbname 

Bằng cách này, các bảng sẽ được tạo ở đúng vị trí mà không phải chỉ định tên DB trên mọi thứ.

Ngoài ra, GO và BEGIN ... END như mọi người khác đang nói.

Các vấn đề liên quan