我想重新创建远程服务器上承载的数据库上的存储过程。 当创建同一SP在本地我没有得到任何错误,但是当我试图创建远程服务器上的SP,我得到这个错误:在远程分区创建存储过程附近的语法不正确
Msg 102, Level 15, State 1, Procedure MySP, Line 26
Incorrect syntax near 'MERGE'.
Msg 102, Level 15, State 1, Procedure MySP, Line 27
Incorrect syntax near 'S'.
这些错误在多个SP重复,我没当我在本地服务器上创建SP时,无法获取它们。 任何想法是什么? 下面是一个简单SP:
USE [MyDatabase]
GO
/****** Object: StoredProcedure [dbo].[InsertContractorInfo] Script Date: 11/07/2012 01:08:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
--exec [dbo].[InsertContractorInfo]
CREATE PROCEDURE [dbo].[InsertContractorInfo]
(@CompanyName nvarchar(50),
@LicenseNumber nvarchar(50),
@MailingAddress1 nvarchar(200),
@MailingAddress2 nvarchar(200),
@Phone nvarchar(10),
@Fax nvarchar(10),
@Mobile nvarchar(10),
@Email nvarchar(200),
@PercentCommercial int,
@PercentResidental int,
@TotalEmployees int,
@AnnualSales decimal(18,2),
@InsuranceCompanyContact nvarchar(100)=null,
@InsuranceCompanyContactEmail nvarchar(100)=null,
@InsuranceCompanyContactPhone nvarchar(100)=null,
@ContractorID uniqueidentifier)
AS
BEGIN
MERGE dbo.Contractor con
USING(SELECT 1 S) S
ON con.Oid = @ContractorID
WHEN MATCHED THEN UPDATE
SET
[CompanyName] = @CompanyName
,[LicenseNumber] = @LicenseNumber
,[MailingAddress1] = @MailingAddress1
,[MailingAddress2] = @MailingAddress2
,[Phone] = @Phone
,[Fax] = @Fax
,[EMail] [email protected]
,[Mobile] [email protected]
,[PercentCommercial] = @PercentCommercial
,[PercentResidental] = @PercentResidental
,[TotalEmployees] = @TotalEmployees
,[ApproximateAnnualSales] = @AnnualSales
,[InsuranceCompanyContact] = @InsuranceCompanyContact
,[InsuranceCompanyContactPhone] = @InsuranceCompanyContactPhone
,[InsuranceCompanyContactEmail] = @InsuranceCompanyContactEmail
WHEN NOT MATCHED THEN
INSERT
([Oid]
,[CompanyName]
,[LicenseNumber]
,[MailingAddress1]
,[MailingAddress2]
,[Phone]
,[Fax]
,[EMail]
,[Mobile]
,[PercentCommercial]
,[PercentResidental]
,[TotalEmployees]
,[ApproximateAnnualSales]
,[InsuranceCompanyContact]
,[InsuranceCompanyContactPhone]
,[InsuranceCompanyContactEmail])
VALUES
(@ContractorId
,@CompanyName
,@LicenseNumber
,@MailingAddress1
,@MailingAddress2
,@Phone
,@Fax
,@EMail
,@Mobile
,@PercentCommercial
,@PercentResidental
,@TotalEmployees
,@AnnualSales
,@InsuranceCompanyContact
,@InsuranceCompanyContactPhone
,@InsuranceCompanyContactEmail
);
END
GO
感谢,Laziale
检查SQL Server版本。如果我记得,这个功能在2008年推出。 –