9

Tôi thực sự mới đối với nền tảng Azure và có thể đây là một câu hỏi ngớ ngẩn nhưng tôi không thể quản lý để tìm thông tin về chủ đề này. Tôi thực sự cần giúp đỡ với điều này. Tôi đang triển khai một cơ sở dữ liệu được sử dụng bởi một dịch vụ web cho một dự án đại học. Trong cơ sở dữ liệu này tôi có một thủ tục được lưu trữ và cần phải chạy nó hàng ngày.Làm thế nào để chạy thủ tục được lưu trữ bằng Azure Automation?

Tìm thấy rằng với Azure Automation bạn có thể lập trình hoặc lên lịch loại hành động này. Tôi "cài đặt" dịch vụ và tôi đang cố gắng tạo ra "runbook" nhưng không biết làm thế nào hoặc những gì để mã ở đây bởi vì tôi không bao giờ sử dụng PowerShell nhiều.

Mọi trợ giúp được cung cấp sẽ được đánh giá cao. Cảm ơn trước!

EDIT 1:

Vì vậy, tôi đang cố gắng để sử dụng mã này để làm cho sự kỳ diệu:

workflow WORKFLOW_NAME 
{ 
    param( 

    ) 


    inlinescript { 
     # Define the connection to the SQL Database 
     $Conn = New-Object System.Data.SqlClient.SqlConnection("Data Source=SERVER_NAME.database.windows.net;Initial Catalog=DATABASE_NAME;Integrated Security=False;User ID=USERNAME;Password=PASSWORD;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False") 

     # Open the SQL connection 
     $Conn.Open() 

     # Define the SQL command to run. 
     $Cmd=new-object system.Data.SqlClient.SqlCommand("exec PROCEDURE_NAME", $Conn) 
     $Cmd.CommandTimeout=120 

     # Execute the SQL command 
     $Da=New-Object system.Data.SqlClient.SqlDataAdapter($Cmd) 

     # Close the SQL connection 
     $Conn.Close() 
    } 
} 

Điều được rằng khi tôi lưu RunBook và xuất bản nó, nó nói không có lỗi. Khi tôi chạy RunBook nó bắt đầu và kết thúc gửi không có lỗi và ngoại lệ, vì vậy bạn có thể mong đợi nó đã làm công việc phải không ?, nhưng khi tư vấn cơ sở dữ liệu không có sửa đổi trong các bảng thủ tục có ý định sửa đổi. Lỗi này có thể là gì? tôi đang làm gì sai?

Tôi lấy mã tham chiếu từ https://gallery.technet.microsoft.com/scriptcenter/How-to-use-a-SQL-Command-be77f9d2#content, cá nhân hóa và loại bỏ "param" vì RunBook khi bắt đầu, không bao giờ yêu cầu bất kỳ tham số nhập nào, vì vậy tôi quyết định đi với chuỗi kết nối đầy đủ. Tôi đang sử dụng cùng một chuỗi kết nối như dự án C# của tôi, kết nối và hoạt động hoàn hảo.

Tôi đang sử dụng giao diện xanh "mới", không biết điều này có thể có tầm quan trọng nào trong vấn đề này hay không.

Một lần nữa, cảm ơn bạn vì bất kỳ trợ giúp nào bạn có thể cung cấp.

+0

Bạn phải thêm $ using: somParam để truy cập thông số trong inlinescript. Xem https://technet.microsoft.com/en-us/library/jj574197(v=ws.11).aspx. –

Trả lời

4

tôi thấy cốt lõi của vấn đề, mã làm việc tốt, các vấn đề là tôi đã sử dụng sai loại RunBook bên trong Azure Automation, do đó, hãy chắc chắn rằng bạn đang chạy một Workflow PowerShell thay vì PowerShell đơn giản.

Mã tôi đã đăng trong các công trình câu hỏi, nhưng tôi tìm thấy một cách tốt hơn để hiểu những gì các mã làm bằng cách sử dụng ví dụ được cung cấp ở đây: https://azure.microsoft.com/en-us/blog/azure-automation-your-sql-agent-in-the-cloud/ (nhờ @ Joseph Idziorek)

Dưới đây là đoạn code làm việc cho bất kỳ ai gặp phải vấn đề tương tự như tôi đã làm:

workflow NAME-OF-YOUR-WORKFLOW 
{ 
    Write-Output "JOB START BEFORE INLINESCRIPT" 

    inlinescript 
    { 
     Write-Output "JOB START" 
     # Create connection to Master DB 
     $MasterDatabaseConnection = New-Object System.Data.SqlClient.SqlConnection 
     $MasterDatabaseConnection.ConnectionString = "Data Source=YOUR-DATABASE-SERVER-NAME.database.windows.net;Initial Catalog=YOUR-DATABASE-NAME;Integrated Security=False;User ID=YOUR-DATABASE-USERNAME;Password=YOUR-DATABASE-PASSWORD;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False" 
     $MasterDatabaseConnection.Open() 

     Write-Output "CONNECTION OPEN" 

     # Create command 
     $MasterDatabaseCommand = New-Object System.Data.SqlClient.SqlCommand 
     $MasterDatabaseCommand.Connection = $MasterDatabaseConnection 
     $MasterDatabaseCommand.CommandText = "YOUR-PROCEDURE-NAME" 

     Write-Output "DATABASE COMMAND TEXT ASSIGNED" 

     # Execute the query 
     $MasterDatabaseCommand.ExecuteNonQuery() 

     Write-Output "EXECUTING QUERY" 

     # Close connection to Master DB 
     $MasterDatabaseConnection.Close() 

     Write-Output "CONNECTION CLOSED" 
    }  
    Write-Output "WORK END - AFTER INLINESCRIPT" 
} 

Đầu ra ghi là tùy chọn, nếu bạn muốn kiểm tra phần nào của mã đang hoạt động và nếu mọi thứ hoạt động sau mỗi lần chạy.

+2

Bạn sẽ có thể chạy tập lệnh này dưới dạng PowerShell Workflow như bạn làm ở trên hoặc dưới dạng một kịch bản PowerShell đơn giản với một số thay đổi mã nhỏ. Việc gói mã của bạn trong inlinecript thực sự làm cho các lệnh ghép ngắn đó chạy như PowerShell thông thường.Nếu bạn đang sử dụng sổ tay tập lệnh PowerShell, hãy xóa InlineScript và Workflow và nó sẽ hoạt động. Chạy như PowerShell thông thường nên thực sự là cách ưa thích vì các tập lệnh của bạn sẽ khởi động nhanh hơn vì chúng không cần biên dịch. –

+0

Cảm ơn bạn rất nhiều vì lời khuyên của bạn. Tôi sẽ cố gắng sử dụng nó như bạn nói, tôi thực sự noob với PowerShell. –

+0

@ElizabethCooper dòng của bạn 'Nếu bạn đang sử dụng sổ tay tập lệnh PowerShell, hãy xóa InlineScript và Workflow và nó chỉ hoạt động' giải thích rất nhiều cho tôi. Không thể tìm thấy nó trên trang web tài liệu chính thức. Hoặc đã bỏ lỡ nó trong khi đọc. Tôi đã có luồng công việc và inlinescript và không thể có được một "hello world" ghi-ouput để làm việc. làm việc không có luồng công việc và tập lệnh nội tuyến và cục bộ. điều này giải thích tại sao. Cảm ơn bạn! Tôi đã upvoted bình luận của bạn. –

0

Bài viết sau đây và mẫu mã tiếp theo nên là một nơi khởi đầu tốt đẹp để lấy mã PowerShell thực hiện đối với cơ sở dữ liệu Azure SQL từ Azure Tự động hóa: https://azure.microsoft.com/en-us/blog/azure-automation-your-sql-agent-in-the-cloud/

+0

Cảm ơn bạn rất nhiều vì phản ứng nhanh của bạn, trên thực tế tôi đã thấy bài viết đó. Tôi đang cố gắng để hiểu mã của nó và sửa đổi nó một chút để sử dụng nó cho những gì tôi cần nhưng nó đã không làm việc. –

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