Helpex - Trao đổi & giúp đỡ Đăng nhập

Tự động điền cơ sở dữ liệu thử nghiệm SQL Server bằng dữ liệu

Bài viết này giải thích cách bạn có thể sử dụng SQL Data Generator (SDG) để tự động cung cấp dữ liệu cho cơ sở dữ liệu thử nghiệm, trong chu kỳ phát triển cơ sở dữ liệu.

Lần đầu tiên tạo tệp dự án SDG cho cơ sở dữ liệu, để xác định chiến lược tạo dữ liệu, chúng ta có thể viết tập lệnh lô dòng lệnh hoặc tập lệnh PowerShell, sử dụng tập lệnh xây dựng trong điều khiển nguồn, để tạo bản sao của cơ sở dữ liệu trong thử nghiệm môi trường, và sau đó là tệp dự án SDG để lấp đầy nó với dữ liệu.

Có một giả định cơ bản rằng bạn sẽ không bao giờ cần phải thay đổi cơ sở dữ liệu thử nghiệm sau đó vì điều đó có nghĩa là thay đổi tệp dự án SDG để phản ánh các thay đổi của lược đồ và vì vậy, bạn cần một tệp dự án cho mỗi bản sao của cơ sở dữ liệu; bài viết tiếp theo của tôi sẽ cho thấy làm thế nào để đạt được điều này.

Tuy nhiên, nếu bạn chỉ cần xây dựng cơ sở dữ liệu thử nghiệm mới, từ phiên bản mới nhất trong kiểm soát nguồn, điền dữ liệu vào nó, chạy thử nghiệm và chia nhỏ lại, thì kỹ thuật hiển thị trong bài viết sẽ thực hiện công việc. Nó tiếp nối từ một số bài viết trước , mô tả cách tạo văn bản, ngày tháng và địa chỉ thực tế cho các bảng riêng lẻ trong cơ sở dữ liệu khách hàng .

Sử dụng trình tạo dữ liệu SQL từ dòng lệnh

Nhiệm vụ đầu tiên của bạn là sử dụng GUI của SDG để thiết kế chiến lược điền dữ liệu vào từng bảng trong cơ sở dữ liệu của bạn.

Nếu bạn đã có dữ liệu thử nghiệm, SDG có thể tải dữ liệu đó từ tệp văn bản hoặc CSV. Nếu bạn có cơ sở dữ liệu hiện có, bạn có thể sử dụng BCP để xuất dữ liệu bảng, sau đó sử dụng SDG để nhập dữ liệu đó, sau bất kỳ thao tác làm xáo trộn hoặc làm sạch nào bạn làm với nó. SDG đảm nhận việc chèn nó theo đúng thứ tự và các phức tạp khác của dữ liệu phụ thuộc lẫn nhau.

Ngoài ra, bạn có thể để SDG tạo dữ liệu cho bạn. Chiến lược này có thể bao gồm từ việc chấp nhận dữ liệu 'mặc định' được tạo bởi công cụ đến việc sử dụng regex nâng cao để tạo dữ liệu giả mạo mà hầu như không thể phân biệt được với dữ liệu thực (xem các bài viết đã tham khảo trước đây để biết một số ví dụ).

Cho dù bạn làm theo cách nào, sau khi hoàn tất, chỉ cần lưu vào điều khiển nguồn dự án SDG của bạn, để ghi lại trong tệp dự án .sqlgen tất cả các tùy chọn và cài đặt tạo dữ liệu của bạn cho cơ sở dữ liệu đó.

Sau đó, chúng tôi có thể gọi SDG từ tập lệnh lô hoặc từ PowerShell và SDG sẽ sử dụng tệp dự án này để điền vào bản sao mới của cơ sở dữ liệu với dữ liệu, miễn là nó có thể đến được máy chủ và thông tin đăng nhập Windows của bạn có các quyền truy cập cần thiết.

Các .sqlgen tập tin dự án là một tập tin XML có thể được đọc và cập nhật trong PowerShell nhưng điều này có lẽ không bao giờ cần thiết. Thông thường, các mục duy nhất cần được chỉ định là cơ sở dữ liệu và phiên bản máy chủ.

Ví dụ về dòng lệnh 'Build and Fill'

Bạn có một cơ sở dữ liệu mà bạn đang phát triển. Có thể là nó chưa hoạt động hoặc có thể là bạn không thể sử dụng hoặc không chấp nhận rủi ro khi sử dụng dữ liệu sản xuất trực tiếp để chạy thử nghiệm của mình. Bạn phải tạo dữ liệu hoặc tải dữ liệu đã chuẩn bị trước.

Mỗi ngày làm việc trong quá trình phát triển, bạn thực hiện các thay đổi đối với cơ sở dữ liệu, đơn vị kiểm tra chúng và lưu chúng vào Hệ thống kiểm soát phiên bản của bạn. Quá trình xây dựng qua đêm sẽ tạo cơ sở dữ liệu và lấp đầy nó bằng dữ liệu trước khi chạy các bài kiểm tra tích hợp của bạn. Tôi sẽ chỉ cho bạn cách xây dựng và điền vào cơ sở dữ liệu của bạn bằng SDG.

Liệt kê 1 cho thấy một tập lệnh PowerShell đơn giản xây dựng cơ sở dữ liệu từ một tập lệnh được lưu trữ trong điều khiển nguồn, sau đó điền vào nó bằng dữ liệu, theo tệp dự án .sglgen . Để tiếp tục chủ đề tạo dữ liệu, tôi sẽ chuyển sang một bên cách chúng ta tạo tập lệnh xây dựng Cơ sở dữ liệu T-SQL (trong ví dụ này, tôi đã viết nó dưới dạng một tập lệnh).

pushd;
Import-Module sqlps -DisableNameChecking #load the SQLPS functionality
popd;

# Firstly, we create the aliases to make the execution of command-line programs easier.
Set-Alias SQLDataGenerator 'C:\Program Files (x86)\Red Gate\SQL Data Generator 3\SQLDataGenerator.exe' -Scope Script

# Now we set the script variables to do the job we want
$MyDatabase='Customers'
$TargetServer='MyServer' #The SQL Server instance
$MyReportDirectory="$($env:HOMEDRIVE)$($env:HOMEPATH)\Documents\GitHub\$MyDatabase\"
$MyBuildScript="$($env:HOMEDRIVE)$($env:HOMEPATH)\Documents\GitHub\$MyDatabase\$MyDatabase-build.sql"
$MySQLDataGeneratorFile="$($env:HOMEDRIVE)$($env:HOMEPATH)\Documents\GitHub\$MyDatabase\$MyDatabase.sqlgen"
# Firstly we create the script directory (normally you get these from source control
Invoke-Sqlcmd -serverinstance $TargetServer -InputFile $MyBuildScript | Out-File -filePath "$MyReportDirectory\Build.rpt"
sqldatagenerator /project:$MySQLDataGeneratorFile /server:$TargetServer /database:$MyDatabase | Out-File -filePath "$MyReportDirectory\Build.rpt"

Liệt kê 1

Bạn sẽ có, nếu tất cả hoạt động tốt, có một cơ sở dữ liệu đã được tích trữ sẵn dữ liệu, sẵn sàng cho các bài kiểm tra tích hợp và kiểm tra hiệu suất.

Khắc phục sự cố tạo dữ liệu

Tất nhiên mọi thứ có thể diễn ra sai lầm. Nếu SDG nhận thấy rằng nó không thể, vì một lý do nào đó, không thể chèn dữ liệu, thì toàn bộ việc chèn bảng sẽ được khôi phục lại.

Lỗi không được ứng dụng trả về là lỗi DOS. Thay vào đó, bạn phải kiểm tra báo cáo do SQL Data Generator tạo ra (trích xuất từ ​​một báo cáo được hiển thị trong Hình 1 bên dưới):

Tự động điền cơ sở dữ liệu thử nghiệm SQL Server bằng dữ liệu

Hình 1

Bạn có thể xuất báo cáo thành tệp và tìm kiếm nó bằng regex. Cách rõ ràng nhất là tìm kiếm từ 'ngoại lệ'.

Kết luận

Nếu bạn thường xuyên cần lưu trữ cơ sở dữ liệu với dữ liệu giả mạo hoặc tập dữ liệu tiêu chuẩn, để tiến hành bất kỳ loại kiểm tra nào, thì SDG được thiết kế để trở thành công cụ thực hiện điều này. Nó sẽ hoạt động tốt với bất kỳ hệ thống Xây dựng nào như Jenkins hoặc TFS và cũng có thể sử dụng với PowerShell.

Tôi muốn lưu trữ một phiên bản của dự án SDG với các tập lệnh xây dựng trong kiểm soát nguồn để có thể tạo, bất kỳ lúc nào, bất kỳ phiên bản nào của cơ sở dữ liệu cùng với dữ liệu của nó. Để thực hiện việc này, bạn cần thêm bất kỳ tệp bổ sung nào được SQL Data Generator sử dụng, cùng với tập lệnh, vào kiểm soát nguồn.

Kỹ thuật tôi mô tả trong bài viết này phù hợp với các cơ sở dữ liệu thử nghiệm mà bạn không cần phải sửa đổi sau đó, nhưng nếu bạn muốn xây dựng phiên bản mới nhất trên máy trạm phát triển của mình và lưu trữ dữ liệu đó thì sao?

Bạn sẽ muốn có thể thực hiện các thay đổi tiếp theo đối với lược đồ cơ sở dữ liệu và sau đó bạn sẽ cần có khả năng điều chỉnh kế hoạch tạo dữ liệu cho các bảng bị ảnh hưởng. Tuy nhiên, để làm điều đó, bạn sẽ cần một tệp .sqlgen dành riêng cho mọi bản sao phát triển của cơ sở dữ liệu.

Đó là chủ đề của bài viết tiếp theo của tôi, sắp ra mắt, Tự động điền dữ liệu vào cơ sở dữ liệu phát triển của bạn .

15 hữu ích 0 bình luận 6.1k xem chia sẻ

Có thể bạn quan tâm

loading