ASP.NET MVC вызывает хранимую процедуру с удаленными таблицами - PullRequest
0 голосов
/ 08 апреля 2019

Я создал таблицу базы данных и на производственном и промежуточном сервере с одинаковыми столбцами и ограничениями.

CREATE TABLE dbo.test
(
    [COLUMN1] [NVARCHAR](255) NOT NULL,
    [COLUMN2] [NVARCHAR](255) NULL,

    PRIMARY KEY CLUSTERED ([COLUMN1] ASC)
                WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                      IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                      ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Я создал проект ASP.NET MVC 5 в C #.Используя функцию «Создать базу данных из модели», я создал контроллер представления модели.

Я создаю хранимую процедуру в бэкенде SQL Server, которая проверяет имя сервера, dev или prod, а затем, если dev, копирует значения в dev в prod (в основном синхронизирует таблицы из dev в prod).То же самое верно для продукта.

CREATE PROCEDURE [dbo].[uspSyncTables]
AS
BEGIN TRY
    SET NOCOUNT ON
    DECLARE @truncateEnvironment VARCHAR(500),
            @syncFromEnv VARCHAR(50), @syncToEnv VARCHAR(50),
            @delTable VARCHAR(500), @tablename NVARCHAR(1000)

    SET @tablename='mydb.dbo.test'

    IF(@@SERVERNAME = 'Prod\INSTANCE01')
    BEGIN
        SET @syncFromEnv = '[prod\INSTANCE01]'
        SET @syncToEnv = '[dev\INSTANCE01]'
    END
    ELSE
    BEGIN
        SET @syncFromEnv = '[dev\INSTANCE01]'
        SET @syncToEnv = '[Prod\INSTANCE01]'
    END

    -- Variables 
    DECLARE @sql NVARCHAR(MAX), @message NVARCHAR(4000)

    BEGIN
        SET @delTable = @syncToEnv+'.'+  @tablename
        SET @sql='DELETE FROM '+ @delTable
        PRINT @sql
        EXEC(@SQL)
    END

    SET @sql = 'INSERT INTO ' +@delTable + ' SELECT * FROM ' + @syncFromEnv +'.'+ @tablename
    EXEC(@SQL)
    PRINT 'Rows inserts into : ' + CONVERT(VARCHAR, @@ROWCOUNT)

END TRY
BEGIN CATCH
    DECLARE @ErrorMessage NVARCHAR(4000), @ErrorSeverity INT, @ErrorState INT

    SELECT  
        @ErrorMessage = ERROR_MESSAGE(), 
        @ErrorSeverity = ERROR_SEVERITY(), 
        @ErrorState = ERROR_STATE();  

    RAISERROR (@ErrorMessage,  @ErrorSeverity, @ErrorState)
END CATCH

Я создал кнопку отправки в ASP.NET MVC (Index.html) и в контроллере, я вызываю эту хранимую процедуру.

Яполучение ошибки

System.Data.SqlClient.SqlException: MSDTC на сервере 'PROD \ INSTANCE01' недоступен

Я думаю, что это возможно, потому что я вызываю удаленную таблицу длясинхронизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...