Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

2 cách tạo cơ sở dữ liệu trên máy chủ được liên kết bằng T-SQL

Một cách để tạo cơ sở dữ liệu trên máy chủ được liên kết là chỉ cần chuyển đến máy chủ đó và tạo cục bộ.

Nhưng có lẽ bạn sẽ cảm thấy hơi bị lừa nếu tôi đưa đó là một trong “2 cách” để tạo cơ sở dữ liệu trên máy chủ được liên kết.

Ngoài ra, mặc dù tùy chọn đó tốt nếu bạn có thể và sẵn sàng thực hiện, nhưng bài viết này hướng dẫn bạn cách thực hiện từ xa bằng T-SQL mà không cần phải chuyển đến máy chủ cục bộ. Thêm vào đó, bạn có thể tìm thấy kỹ thuật này nhanh hơn so với việc chuyển sang máy chủ khác.

Cả “2 cách” đều liên quan đến EXECUTE câu lệnh (cũng có thể được rút ngắn thành EXEC ). Chúng tôi có thể sử dụng câu lệnh này để thực thi mã trên máy chủ được liên kết và bao gồm cả việc tạo cơ sở dữ liệu trên đó.

Điều kiện tiên quyết

Việc thực thi các thủ tục được lưu trữ trên một máy chủ được liên kết yêu cầu bạn bật RPC Out (nếu nó chưa được bật).

Bạn có thể kiểm tra xem RPC Out có được bật hay không bằng cách truy vấn sys.servers xem danh mục.

Đoạn mã sau cho phép RPC Out trên một máy chủ được liên kết có tên là Homer :

EXEC sp_serveroption 'MyLinkedServer', 'rpc out', 'true';

Khi điều đó được bật, chúng tôi có thể tiếp tục và tạo cơ sở dữ liệu.

Phương pháp 1

Đây là phương pháp đầu tiên để tạo cơ sở dữ liệu trên máy chủ được liên kết.

EXEC ('CREATE DATABASE Pets') AT Homer;

Trong ví dụ này, tôi tạo một cơ sở dữ liệu có tên là Pets trên một máy chủ được liên kết có tên là Homer .

EXECUTE / EXEC câu lệnh có thể được sử dụng để gửi các lệnh chuyển tới các máy chủ được liên kết.

Để thực hiện việc này, hãy đưa lệnh chuyển qua trong dấu ngoặc đơn sau EXECUTE / EXEC từ khóa, sau đó theo dõi từ khóa đó với AT LinkedServerName , trong đó LinkedServerName là tên của máy chủ được liên kết mà bạn muốn tạo cơ sở dữ liệu.

Do đó, tất cả những gì chúng ta cần làm là đưa vào CREATE TABLE tuyên bố như một đối số cho tuyên bố này.

Lưu ý rằng tên máy chủ được liên kết là tên mà bạn đã đặt khi tạo máy chủ được liên kết. Đó không phải là tên máy chủ thực của máy chủ từ xa.

Phương pháp 2

Phương pháp thứ hai tương tự như phương pháp đầu tiên, ngoại trừ trong trường hợp này, chúng tôi chuyển lệnh của mình tới sp_executesql hệ thống lưu trữ thủ tục trên máy chủ từ xa.

EXEC Homer.master.dbo.sp_executesql N'CREATE DATABASE World;';

Để thực hiện việc này, chúng ta cần sử dụng tên gồm bốn phần, bao gồm tên của máy chủ được liên kết. Nếu chúng tôi không làm điều này, chúng tôi sẽ kết thúc việc thực thi sp_executesql trên máy chủ cục bộ của chúng tôi thay vì máy chủ từ xa.

Chuyển câu lệnh dưới dạng một biến

Bạn cũng có thể chuyển CREATE DATABASE câu lệnh dưới dạng một biến cho EXEC tuyên bố.

Như thế này:

DECLARE @tsql nvarchar(max);
SET @tsql = 'CREATE DATABASE Pets';
EXEC (@tsql) AT Homer;

Mặc dù vậy, nếu bạn cố gắng chuyển sang cơ sở dữ liệu và tạo bảng, bạn có thể gặp sự cố, ngay cả khi bạn thêm GO ở những nơi thông thường. Điều này có thể là do GO từ khóa thực sự không phải là một phần của T-SQL và nó chỉ được công nhận bởi một số tiện ích nhất định.

Do đó, bạn có thể cần chạy một tập lệnh riêng để tạo các bảng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hoạt động của hàm STR () trong SQL Server (T-SQL)

  2. Làm thế nào để gán một kết quả thực thi cho một biến sql?

  3. Hiểu SQL Server ALTER TABLE ADD COLUMN Statement

  4. Hiệu suất máy chủ SQL TOP truy vấn CPU -1

  5. Khóa ngoài cho khóa không phải khóa chính