Bỏ qua, đến nội dung

Câu hỏi thường gặp — Microsoft SQL Server Data Source

Cài đặt và kết nối

Không thể kết nối đến SQL Server, báo lỗi timeout?

Cách xử lý theo thứ tự:

  1. Kiểm tra SQL Server đang chạy: systemctl status mssql-server (Linux) hoặc SQL Server Configuration Manager (Windows)
  2. Đảm bảo TCP/IP protocol đã bật trong SQL Server Network Configuration
  3. Xác nhận firewall cho phép port 1433 từ IP server Digiforce
  4. Kiểm tra SQL Server không chỉ bind localhost — phải cho phép kết nối remote
  5. Thử kết nối thủ công: sqlcmd -S <host>,1433 -U <user> -P <password>
  6. Nếu dùng named instance, đảm bảo SQL Server Browser service đang chạy

Kết nối thành công nhưng không thấy bảng?

Nguyên nhân có thể:

  1. User không có quyền SELECT trên bảng
  2. Bảng nằm trong schema khác (không phải dbo)
  3. Tên database sai

Cách xử lý:

  1. Kiểm tra quyền: SELECT * FROM fn_my_permissions(NULL, 'DATABASE');
  2. Kiểm tra schema: SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES;
  3. Nhấn Refresh để introspect lại

SQL Authentication vs Windows Authentication?

Plugin sử dụng SQL Authentication (username + password). Windows Authentication hiện chưa được hỗ trợ trực tiếp qua giao diện. Nếu SQL Server chỉ cho phép Windows Auth, cần:

  • Bật mixed mode authentication trên SQL Server
  • Hoặc cấu hình reverse proxy/NTLM authentication ở tầng hạ tầng

Sử dụng hằng ngày

Dữ liệu có đồng bộ real-time không?

Có. Plugin truy vấn trực tiếp SQL Server mỗi lần request — không có cache. Dữ liệu luôn phản ánh trạng thái hiện tại của database.

Có thể liên kết bảng SQL Server với bảng nội bộ không?

Không. Chỉ hỗ trợ relation giữa các bảng trong cùng một data source. Cross-datasource relation chưa được hỗ trợ.

Hiệu năng với bảng lớn?

  • Plugin sử dụng Sequelize connection pool
  • SQL Server sử dụng OFFSET FETCH cho phân trang (hiệu quả hơn TOP)
  • Đảm bảo có index trên cột thường filter/sort
  • Phân trang mặc định 20 bản ghi/trang

Kiểu bit được xử lý như thế nào?

SQL Server dùng bit thay vì boolean. Plugin đăng ký MSSQLBitField để tự động chuyển đổi giá trị 0/1 thành true/false trên giao diện.

Azure SQL Database có được hỗ trợ không?

Có. Cấu hình tương tự, nhưng:

  • Bắt buộc bật Encrypt connection
  • Host dạng server.database.windows.net
  • Port mặc định vẫn 1433
  • Username dạng user@server (tùy cấu hình)

Lỗi thường gặp

Lỗi "Login failed for user"

Nguyên nhân: Sai username/password hoặc user chưa được tạo trên SQL Server.

Cách xử lý:

  1. Kiểm tra username/password
  2. Đảm bảo SQL Server Authentication đã được bật (mixed mode)
  3. Kiểm tra user đã được map vào database: USE my_db; SELECT * FROM sys.database_principals;

Lỗi "Cannot open database"

Nguyên nhân: Tên database sai hoặc user không có quyền truy cập database.

Cách xử lý:

  1. Kiểm tra tên database: SELECT name FROM sys.databases;
  2. Cấp quyền: USE my_db; CREATE USER [username] FOR LOGIN [username];

Lỗi "Encrypt connection" khi kết nối Azure SQL

Nguyên nhân: Azure SQL Database bắt buộc mã hóa kết nối.

Cách xử lý: Bật Encrypt connection trong cấu hình data source. Nếu vẫn lỗi, bật thêm Trust server certificate.

Lỗi "plugin need data-source-manager plugin enabled"

Cách xử lý: Vào Plugin Manager, bật data-source-manager trước, sau đó bật plugin-data-source-external-mssql.

Kiểu uniqueidentifier không hiển thị đúng

Nguyên nhân: GUID format có thể khác khi hiển thị.

Cách xử lý: Plugin map uniqueidentifieruuid. Nếu cần format tùy chỉnh, chỉnh interface của trường sau khi introspect.

Kết nối nhiều SQL Server instance

Có thể tạo nhiều data source type mssql, mỗi cái trỏ đến instance/database khác nhau. Mỗi data source hoàn toàn độc lập.