2010-11-21 37 views
14

Tôi đã tìm kiếm một giải pháp "dứt khoát" cho điều này trong một vài giờ và không thể tìm ra chính xác vấn đề là gì vì hy vọng ai đó có thể chỉ cho tôi đúng hướng.Làm cách nào để sửa lỗi "cú pháp sai gần GO" trong các tập lệnh được tạo bằng Thuật sĩ xuất bản cơ sở dữ liệu của Microsoft?

Tôi đang cố gắng tạo tập lệnh cho cơ sở dữ liệu (một tệp MDF DB) trên máy từ xa và sử dụng nó để tạo cùng một cơ sở dữ liệu cục bộ. Tôi đã có Visual Studio 2010 trên cả hai máy để sử dụng thuật sĩ xuất bản cơ sở dữ liệu để tạo ra các kịch bản.

Tôi tiếp theo tạo một DB trống trong Visual Studio cục bộ (một tệp MDF DB khác) và được chọn để tạo truy vấn mới. Tôi đã dán tập lệnh đã sao chép vào nhưng khi tôi thử và chạy nó, tôi nhận được hàng tá lỗi "cú pháp không chính xác gần GO". Tôi không chắc chắn bao nhiêu trong tổng số là cảnh báo bật lên đi xuống dưới cùng của màn hình của tôi. Nó có vẻ là rất nhiều mặc dù.

Tôi đã cắt bớt tất cả trừ phần trên cùng của tập lệnh và tôi vẫn gặp lỗi tương tự. Nó bây giờ trông giống như thế này:

SET ANSI_NULLS ON 

GO 

Tôi vẫn gặp lỗi "cú pháp sai gần GO" với điều này.

Có điều gì đó không đúng với các tập lệnh mà công cụ này tạo ra hoặc tôi đang làm điều gì sai với nó?

DB từ xa là 2008 R2 và địa phương của tôi chỉ là đồng bằng 2008, do đó tại sao tôi không chỉ sao chép tệp MDF qua.

Nếu có bất kỳ đề xuất nào, chúng sẽ được chào đón nhiều nhất.

Trả lời

19

Từ các tài liệu:

GO không phải là một tuyên bố Transact-SQL; nó là một lệnh được công nhận bởi các tiện ích sqlcmd và osql và trình soạn thảo Mã Quản lý Studio của SQL Server .

Hoặc sử dụng công cụ này để thực thi tập lệnh hoặc bỏ qua lệnh GO.

+4

Cảm ơn thông tin. Có lẽ tôi đã đoán nó sẽ giống như thế nhưng tôi nghĩ rằng tôi đã bị mắc kẹt trong suy nghĩ rằng Microsoft sẽ không tạo ra một công cụ tạo ra các tập lệnh văn bản thuần túy mà sau đó không thể chạy được dưới dạng tập lệnh SQL. Ah, Microsoft ... –

+0

Sự trớ trêu thực sự là các dự án Cơ sở dữ liệu của VS2010 * làm * hỗ trợ "GO" làm bộ tách hàng loạt - thậm chí trong hộp thoại Tùy chọn. Khá cẩu thả của họ, nếu bạn hỏi tôi. – McGuireV10

+0

Ở đây tôi tìm thấy một cách tiếp cận tốt đẹp để hiểu rõ hơn về các cách sử dụng khác nhau của từ khóa GO, tôi nghĩ nó xứng đáng để cho nó một cái nhìn: [Fun with GO] (http://beyondrelational.com/modules/2/blogs/ 70/bài viết/10842/fun-with-go.aspx). –

8

Tôi đã gặp vấn đề tương tự gần đây và tìm thấy câu trả lời đúng cho nó (tôi nghĩ).

Nếu bạn tạo một truy vấn trong một số biên tập viên ngẫu nhiên khác hơn là biên tập SQL Server Management Studio Mã ở phần cuối của một dòng bạn có thể có được một VẬN CHUYỂN RETURN (\ r) nhân vật thay vì một RETURN VẬN CHUYỂN + ĐƯỜNG DÂY FEED (\ r \ n). Và ngay cả khi bạn nhấn phím DEL ở cuối dòng và sau đó Enter nó không thay đổi.

Sử dụng Notepad ++ để thay thế CR (\ r) cho CRLF (\ r \ n) - giữ nguyên thứ tự, điều quan trọng là!

+0

+1. Wow. Tôi đã dành 30 phút vặn vẹo xung quanh với các truy vấn.Cảm ơn bạn về thông tin! – gh9