Tôi đã kiểm tra nhiều chủ đề bây giờ và tôi không thể tìm thấy câu trả lời cho điều này, và tôi cần phải khá chắc chắn/tự tin rằng tôi chính xác trong giả định điều này trước khi trả lời cho khách hàng.SQL Server có hợp lệ hóa một proc đã lưu trước khi chạy nó không?
vì vậy, như tiêu đề, Máy chủ SQL có xác thực quy trình được lưu trước khi chạy không?
IE: Ngay cả khi tôi có số IF statement
sẽ không bao giờ đáp ứng điều kiện nhất định, mã sẽ được kiểm tra và xác thực trước khi chạy?
EDIT: Dưới đây là một ví dụ nhanh:
DECLARE @ParamSource VARCHAR(2) = 'V3'
IF @ParamSource = 'V1'
BEGIN
--USE LINKED SERVER HERE WHICH THROWS AN ERROR ABOUT CONNECTIONS
END
IF @ParamSource = 'V3'
BEGIN
--DO MY ACTUAL CODE
END
Tôi sẽ không bao giờ đáp ứng mà điều kiện đầu tiên, nhưng đối với một số lý do, proc lưu trữ của tôi đang cố gắng để xác nhận về thời gian chạy và giữ erroring.
Chúng được xác thực (ít nhất một phần) khi được xây dựng ban đầu, nhưng không phải lúc chạy. Tuy nhiên điều này không đúng đối với SQL động mà không bao giờ được xác thực. Điều này đến từ kinh nghiệm cá nhân, không phải từ bất kỳ tài liệu nào. Tuy nhiên, nếu bạn muốn kiểm tra lý thuyết này, bạn có thể xây dựng một thủ tục được lưu trữ đơn giản dựa vào một bảng thử nghiệm, sau đó loại bỏ một cột khỏi bảng thử nghiệm. Các thủ tục được lưu trữ sẽ vẫn cố gắng để chạy, nhưng sẽ ném một lỗi. – user2366842
@ user2366842- cảm ơn vì đã trả lời ... Lý do tôi cho rằng việc xác nhận hợp lệ hoặc làm điều gì đó dọc theo những dòng này là vì tôi đang trong quá trình thiết lập một môi trường 'Khắc phục thảm họa 'và một trong các câu lệnh IF máy chủ mà tôi không thể kết nối với một số lý do (Nhưng, tôi không bao giờ cần phải đáp ứng điều kiện đó, tôi có thể xóa mã này, nhưng tôi chỉ muốn biết nếu đây là những gì SQL đã làm?) – Mike
Độ phân giải và biên dịch tên trì hoãn: https: //technet.microsoft.com/en-us/library/ms190686(v=sql.105).aspx (liên kết được cập nhật) – Pred