এসকিউএল সার্ভার ২০১২ অনুলিপি ডাটাবেস ব্যর্থ হয়েছে


10

আমি একই স্কেল সার্ভারে ডাটাবেসের একটি অনুলিপি তৈরি করতে চাই। সুতরাং, যখন আমি অনুলিপি ডেটাবেস উইজার্ডটি ব্যবহার করি তখন এটি ত্রুটি ছুঁড়ে ফেলে:

কনফিগ:

সা ব্যবহারকারী

পদ্ধতি: "এসকিউএল পরিচালন অবজেক্ট পদ্ধতিটি ব্যবহার করুন"

গন্তব্য ডাটাবেসের জন্য নতুন নাম চয়ন করুন।

ত্রুটি:

শিরোনাম: ডাটাবেস উইজার্ড অনুলিপি করুন

কাজ ব্যর্থ হয়েছে। বিশদ জন্য গন্তব্য সার্ভারে ইভেন্ট লগ চেক করুন।

------------------------------ বাটন:

ঠিক আছে

ইভেন্ট লগ ইন:

  • পদ্ধতি

    • প্রদানকারী

    [নাম] এসকিউএল সার্ভার

    • ইভেন্টআইডি 208

    [যোগ্যতা অর্জনকারী] 16384 স্তর 3 কার্য 3 কীওয়ার্ড 0x80000000000000

    • TimeCreated

    [সিস্টেমটাইম] 2014-05-07T06: 23: 11.000000000Z ইভেন্ট রেকর্ডআইডি 123672 চ্যানেল অ্যাপ্লিকেশন কম্পিউটার সার্ভার 1 সুরক্ষা

  • EventData

    CDW_Server1_Server1_3 0x666DE807F406D7438C65B09171211D7B
    ব্যর্থ 2014-05-07 10:52:50 কাজ ব্যর্থ হয়েছে। কাজটি ব্যবহারকারী সা দ্বারা প্রেরণ করা হয়েছিল। চালানোর শেষ পদক্ষেপটি ছিল পদক্ষেপ 1 (CDW_Server1_Server1_3_Step)।

লগ ফাইলের শেষ লাইনগুলি:

অনপ্রোগ্রেস, সার্ভার 1, এনটি পরিষেবা \ এসকিউএলএসএআরভিআরএগেন্ট, সার্ভার 1_Server1_Transfer অবজেক্টস টাস্ক, {066BD090-26F3-45D8-AD60-B207D56D44CE}, C 1CF7B713-F747-45FB-8936-5522651 AM05740 / 7/2014 10:08:46 পূর্বাহ্ণ, 0,0x, 1 ডাটাবেস (গুলি) এর জন্য ডাটাবেস স্থানান্তর ব্যর্থ হয়েছে। অনপ্রোগ্রেস, সার্ভার 1, এনটি পরিষেবা \ এসকিউএলএসএআরভিআরএগেন্ট, সার্ভার 1_Server1_Transfer অবজেক্টস টাস্ক, {066BD090-26F3-45D8-AD60-B207D56D44CE}, C 1CF7B713-F747-45FB-8936-5522651 AM05740 / 7/2014 10:08:46 এএম, 100,0x, স্থানান্তর অবজেক্টগুলি কার্যকর হয়েছে। অন ​​টাস্কফেইলড, সার্ভার 1, এনটি পরিষেবা \ এসকিউএলএসআরভাইগ্যান্ট, সার্ভার 1_Server1_Transfer অবজেক্টস টাস্ক, 6 066BD090-26F3-45D8-AD60-B207D56D44CE}, C 1CF7B713-F747-45FB-1036C57657:0:0054651 / 7/2014 10:08:46 এএম, 0,0x, (নাল) অনপোস্টএক্সেকিউট, সার্ভার 1, এনটি পরিষেবা \ এসকিউএল সার্ভার, সার্ভার 1_সার্ভার 1_অবজেক্ট টাস্ক, {066BD090-26F3-45D8-AD60-B207D56D44CE}, {1CF7B713-F747-45FB-8936-5522651E0C7A}, 5/7/2014 10:08:46 এএম, 5/7/2014 10:08:46 এএম, 0, 0 এক্স, (নাল) অন ওয়ার্নিং, সার্ভার 1, এনটি পরিষেবা \ এসকিউএলএসআরভাইগেন্ট, সিডিডাব্লু_সার্ভার 1_Server1_1, {45A6144C-8DDD-49A6-A6BA-AE81E24826D5}, C 1CF7B713-F747-45F5 -736-555557-555557-5555555 -557 এএম, 5/7/2014 10:08:46 এএম, -2147381246,0x, এসএসআইএসের সতর্কতা কোড ডিটিএস_ডাব্লু_ম্যাক্সিমিউমআরআরএররেক্টেড। কার্যকর করার পদ্ধতিটি সফল হয়েছে, তবে উত্থাপিত ত্রুটির সংখ্যা (1) সর্বাধিক অনুমোদিত (1) এ পৌঁছেছে; ব্যর্থতা ফলে। এটি ঘটে যখন ত্রুটির সংখ্যাটি ম্যাক্সিমামএররকাউন্টে উল্লিখিত সংখ্যাটিতে পৌঁছায়। ম্যাক্সিমিয়ামআরারকাউন্ট পরিবর্তন করুন বা ত্রুটিগুলি ঠিক করুন। A 45A6144C-8DDD-49A6-A6BA-AE81E24826D5}, {1CF7B713-F747-45FB-8936-5522651E0C7A}, 5/7/2014 10:08:46 এএম, 5/7/2014 10:08:46 এএম, -21473 , 0x, এসএসআইএস সতর্কতা কোড ডিটিএস_ডাব্লু_ম্যাক্সিমিউমআরআরএর অ্যাকাউন্টে। কার্যকর করার পদ্ধতিটি সফল হয়েছে, তবে উত্থাপিত ত্রুটির সংখ্যা (1) সর্বাধিক অনুমোদিত (1) এ পৌঁছেছে; ব্যর্থতা ফলে। এটি ঘটে যখন ত্রুটির সংখ্যাটি ম্যাক্সিমামএররকাউন্টে উল্লিখিত সংখ্যাটিতে পৌঁছায়। ম্যাক্সিমিয়ামআরারকাউন্ট পরিবর্তন করুন বা ত্রুটিগুলি ঠিক করুন। A 45A6144C-8DDD-49A6-A6BA-AE81E24826D5}, {1CF7B713-F747-45FB-8936-5522651E0C7A}, 5/7/2014 10:08:46 এএম, 5/7/2014 10:08:46 এএম, -21473 , 0x, এসএসআইএস সতর্কতা কোড ডিটিএস_ডাব্লু_ম্যাক্সিমিউমআরআরএর অ্যাকাউন্টে। কার্যকর করার পদ্ধতিটি সফল হয়েছে, তবে উত্থাপিত ত্রুটির সংখ্যা (1) সর্বাধিক অনুমোদিত (1) এ পৌঁছেছে; ব্যর্থতা ফলে। এটি ঘটে যখন ত্রুটির সংখ্যাটি ম্যাক্সিমামএররকাউন্টে উল্লিখিত সংখ্যাটিতে পৌঁছায়। ম্যাক্সিমিয়ামআরারকাউন্ট পরিবর্তন করুন বা ত্রুটিগুলি ঠিক করুন।

অনপোস্টএকসেকিউট, সার্ভার 1, এনটি পরিষেবা \ এসকিউএলএসআরভাইগেন্ট, সিডিডাব্লু_সভার সার্ভার 1_সার্ভার 1_1, {45A6144C-8DDD-49A6-A6BA-AE81E24826D5}, C 1CF7B713-F747-45FB-73605765 / 0736-5722 / 2014 10:08:46 এএম, 0,0x, (নাল) ডায়াগনস্টিকেক্স, সার্ভার 1, এনটি পরিষেবা \ এসকিউএল সার্ভার, CDW_Server1_Server1_1, {45A6144C-8DDD-49A6-A6BA-AE81E24826D5-1CF7-7CF77 , 5/7/2014 10:08:46 এএম, 5/7/2014 10:08:46 এএম, 0,0x, 104546304 প্যাকেজইন্ড, সার্ভার 1, এনটি পরিষেবা \ এসকিউএল সার্ভার, CDW_Server1_Server1_1, A 45A6144C-8DDD-49A6-A6BA- AE81E24826D5}, C 1CF7B713-F747-45FB-8936-5522651E0C7A 5, 5/7/2014 10:08:46 এএম, 5/7/2014 10:08:46 এএম, 1,0x, প্যাকেজ কার্যকর করার সমাপ্তি।


আপনি কীভাবে অনুলিপি ডাটাবেস প্রক্রিয়া কনফিগার করবেন সে সম্পর্কে আপনার আরও ডেটা সরবরাহ করা উচিত। হতে পারে আপনি ফাইল স্তরে নিজেই ডিবি অনুলিপি করছেন।
ভেস্পার

আমি উইজার্ডে একজন ব্যবহারকারী ব্যবহার করি। এবং পদ্ধতি: "এসকিউএল পরিচালন অবজেক্ট পদ্ধতিটি ব্যবহার করুন"। এবং আমি অবশ্যই নতুন ডিএন নামকরণ করেছি। আমি একটি পরীক্ষা ডিবি দিয়ে এই পদক্ষেপগুলি করেছি এবং এটি দুর্দান্ত কাজ করে !!!!!!

নতুন নামে পুনরুদ্ধার করুন, খুব বেশি কাজ হয়নি !!!! !!!!!!!!! এটি ব্যবহারে ওল্ডডিবি ত্রুটি ফেলে দেয়। আমি অ্যাপ্লিকেশনটি

2
আপনাকে নিশ্চিত করতে হবে যে আপনি যখন পুনরুদ্ধার করবেন তখন আপনি শারীরিক ফাইলের নাম এবং যুক্তিযুক্ত নাম পরিবর্তন করবেন অন্যথায় আপনি ব্যবহৃত ডিবি ফাইলগুলির শীর্ষে পুনরুদ্ধার করার চেষ্টা করছেন যা ব্যবহৃত হবে।
স্টিভ পেটিফায়ার

নতুন নাম দেওয়ার পরে উইজার্ড পুনরুদ্ধারে। যৌক্তিক এবং শারীরিক নাম স্বয়ংক্রিয়ভাবে পরিবর্তন হয়নি। এবং আমি কেবল শারীরিক নামটি যৌক্তিক নয় পরিবর্তিত করতে পারি

উত্তর:


7

একটি .bak এ ডাটাবেসটিকে কেবল ব্যাকআপ করা সহজ এবং তারপর একটি .bak পুনরুদ্ধার থেকে একটি নতুন ডাটাবেস তৈরি করা সহজ হতে পারে।

BACKUP DATABASE [aaa] TO DISK = N'E:\aaa.bak'

তারপরে .bak এ বর্তমান ফাইলগুলির জন্য যৌক্তিক নাম এবং অবস্থানগুলি পরীক্ষা করুন:

Restore filelistonly from disk ='E:\aaa.bak'

এবং অবশেষে ডাটাবেস পুনরুদ্ধার করুন, আপনার বিদ্যমান ডাটাবেসটি ওভাররাইট না করে তা নিশ্চিত করার জন্য ফাইলগুলির নাম পরিবর্তন করে

restore database Newdatabasename
FROM disk = 'E:\aaa.bak'
WITH replace,
MOVE 'Logical data name' TO 'E:\Newdatabasename.MDF',
MOVE 'Logical log name' TO 'E:\Newdatabasename.LDF',
recovery --force

আপনি যদি লোয়ার সার্ভার সংস্করণে অনুলিপি করার চেষ্টা করছেন তবে তা নয়।
watchbywbarif

@Watbywbarif প্রশ্নটি ছিল:in the same SqlServer
13'17 এ পৌঁছেছে

3

ডেটাবেসের অনুলিপি তৈরির জন্য আমি নিজের জন্য লিখেছি স্ক্রিপ্টের নীচে। এটি নমনীয় এবং একটি সঞ্চিত পদ্ধতিতে রূপান্তরিত হতে পারে।

মন্তব্যগুলি এতে কী করবে তা ব্যাখ্যা করবে।

এটি কোনও প্রোডিতে চালানোর আগে এটি একটি পরীক্ষার সার্ভারে পরীক্ষা করুন !!

/*
Author      :       KIN SHAH
Purpose     :       Written for dba.stackexchange.com
                -   This script will take the current database name and make a copy of it as
                    databaseName_copy_Month_Year e.g. [AdventureWorks2008R2_copy_August_2014]
                -   It will not replace the database and will fail if the copy database existed.
                -   Assuming that copy database is not currently present on the instance.
                -   It wont delete the backup made as a part of making a copy of the database. 
                    It will print out the location and then you can delete it
Any questions .. Let me know .... :-)

*/

IF object_id('tempdb..#temp1') IS NOT NULL
BEGIN
    DROP TABLE #temp1
END

IF object_id('tempdb..#temp2') IS NOT NULL
BEGIN
    DROP TABLE #temp2
END

IF object_id('tempdb..#temp3') IS NOT NULL
BEGIN
    DROP TABLE #temp3
END

/************************************************* CHANGE HERE STARTS !! ******************************************************/
DECLARE @dbname NVARCHAR(MAX)

SET @dbname = 'AdventureWorks2008R2' -- ** change HERE ***

--backup path goes here
DECLARE @path NVARCHAR(MAX)

-- Here the path is hard-coded  as all the server has 'D:\2restore' folder. This can be made as input parameter also !
SET @path = 'C:\crap_test' -- ** change HERE ***
    -- generates copy database name 

DECLARE @archivedbname NVARCHAR(MAX)

SET @archivedbname = @dbname + '_copy' + '_' + DATENAME(MONTH, GETDATE()) + '_' + CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR(MAX))

--PRINT @archivedbname
/************************************************* CHANGE HERE ENDS !! ******************************************************/
-- check that the database to be archived is  there and is not a system database ...
IF @dbname IN (
        SELECT NAME
        FROM MASTER..sysdatabases
        WHERE DB_ID(NAME) > 4
        )
BEGIN
    SELECT 'The database is correct. starting Archiving Process .....'

    BEGIN TRY
        SELECT *
        INTO #temp1
        FROM MASTER.sys.master_files
        WHERE database_id = cast(DB_ID(@dbname) AS NVARCHAR(MAX))

        -- now get the logical and physical names of the database to be archived
        -- type 0 = data
        CREATE TABLE #temp2 (
            ldata NVARCHAR(MAX)
            ,pdata NVARCHAR(max)
            )

        DECLARE @ldata NVARCHAR(MAX)
        DECLARE @pdata NVARCHAR(MAX)

        SELECT @ldata = 'select [name],[physical_name] from #temp1 where  type = 0 and database_id =' + cast(DB_ID(@dbname) AS NVARCHAR(MAX))

        INSERT INTO #temp2
        EXEC (@ldata)

        SELECT @ldata = ldata
        FROM #temp2

        --PRINT @ldata
        SELECT @pdata = pdata
        FROM #temp2

        SELECT @pdata = left(@pdata, len(left(@pdata, LEN(@pdata) - 4)) - len(@ldata)) + @archivedbname + '.mdf'

        --PRINT @pdata
        -- type 1 = log
        CREATE TABLE #temp3 (
            llog NVARCHAR(MAX)
            ,plog NVARCHAR(max)
            )

        DECLARE @llog NVARCHAR(MAX)
        DECLARE @plog NVARCHAR(MAX)

        SELECT @llog = 'select [name],[physical_name] from #temp1 where  type = 1 and database_id =' + cast(DB_ID(@dbname) AS NVARCHAR(MAX))

        INSERT INTO #temp3
        EXEC (@llog)

        SELECT @llog = llog
        FROM #temp3

        --PRINT @llog
        SELECT @plog = plog
        FROM #temp3

        SELECT @plog = left(@plog, LEN(left(@plog, LEN(@plog) - 4)) - LEN(@llog)) + @archivedbname + '_log.ldf'

        --PRINT @plog
        -- now we will take backup of the database that is specified ....
        SELECT 'Taking backup of database ' + @dbname

        DECLARE @sql NVARCHAR(MAX)

        -- use compression using Redgate backup 
        SELECT @sql = 'backup database ' + @dbname + ' to disk =''' + @path + '\' + @dbname + '_FULL_' + convert(VARCHAR(10), getdate(), 112) + '.bak' + ''' with init, compression, stats =10'

        PRINT @sql

        EXEC (@sql)

        SELECT 'The backup is done for ' + @dbname
    END TRY

    BEGIN CATCH
        SELECT ERROR_NUMBER() AS ErrorNumber
            ,ERROR_SEVERITY() AS ErrorSeverity
            ,ERROR_STATE() AS ErrorState
            ,ERROR_PROCEDURE() AS ErrorProcedure
            ,ERROR_LINE() AS ErrorLine
            ,ERROR_MESSAGE() AS ErrorMessage
    END CATCH

    -- now restore the database as archive database          
    BEGIN TRY
        SELECT 'Starting restore part for ' + @archivedbname

        SELECT @sql = 'restore database ' + @archivedbname + ' from disk = ''' + @path + '\' + @dbname + '_FULL_' + CONVERT(VARCHAR(8), GETDATE(), 112) + '.bak' + ''' with recovery ' + ',' + ' move ''' + @ldata + ''' ' + 'to ' + '''' + @pdata + '''' + ',' + ' move ''' + @llog + ''' ' + ' to ' + '''' + @plog + ''''

        --print (@sql)
        EXEC (@sql)

        SELECT 'Restore is done sucessfully ! And the new database name is ' + @archivedbname + '!!'
    END TRY

    BEGIN CATCH
        SELECT ERROR_NUMBER() AS ErrorNumber
            ,ERROR_SEVERITY() AS ErrorSeverity
            ,ERROR_STATE() AS ErrorState
            ,ERROR_PROCEDURE() AS ErrorProcedure
            ,ERROR_LINE() AS ErrorLine
            ,ERROR_MESSAGE() AS ErrorMessage
    END CATCH

    SELECT 'Database is restored as Copy, Now you can delete the backup taken at ...' + @path + '\' + @dbname + '_full_' + CONVERT(VARCHAR(8), GETDATE(), 112) + '.bak'''
        -- delete the backup file
        --select @sql= 'exec master.dbo.xp_cmdshell ''Del '+@path+'\'+ @dbname+'_full_'+ CONVERT(VARCHAR(8), GETDATE(), 112)+'.bak'''
        --print (@sql)
        --EXEC (@sql)
END
ELSE
BEGIN
    SELECT ' The database is INCORRECT ! Check if the database exists or is not a system database'
END
GO

2

আমারও একই প্রশ্ন ছিল. আমি এসকিউএল সার্ভার এজেন্ট পরিষেবা লগন অ্যাকাউন্টটিকে প্রশাসকের কাছে পরিবর্তন করেছি। তার পরে, সব ঠিক আছে। আমি মনে করি, এজেন্ট পরিষেবা পড়তে / লিখতে পারেনি।


এখানে উত্তরগুলির মধ্যে এটি সবচেয়ে সহজ সমাধান। সমস্যাটি সৃষ্টি করার জন্য আমি লগন অ্যাকাউন্টটিকে কখনই সন্দেহ করব না।
লেস্টার নুবলা

2

আমার এ নিয়ে সমস্যা ছিল। শেষ পর্যন্ত আমি দুটি জিনিস করার সিদ্ধান্ত নিয়েছি:

  1. 'ডিটিএস প্যাকেজ' নামে একটি ফাইল শেয়ার তৈরি করুন। এটি কারণ আমি উইজার্ডে একটি প্যাকেজ গন্তব্য নির্বাচন করতে সক্ষম ছিলাম না। আপনার এসকিউএল সার্ভার এজেন্ট যে অ্যাকাউন্টের অধীনে চলছে তার জন্য ভাগ এবং এসিএল অনুমতিগুলি পূর্ণ রয়েছে তা নিশ্চিত করুন (ডিফল্টটি হ'ল 'এনটি সার্ভিস \ এসকিউএলএসবারভারেন্ট')।

এখানে চিত্র বর্ণনা লিখুন

  1. এসকিউএল সার্ভার এজেন্ট অ্যাকাউন্টে গন্তব্য ফোল্ডারে যেখানে সম্পূর্ণ নতুন ডাটাবেস তৈরি করা হবে সেখানে সম্পূর্ণ অনুমতি যুক্ত করুন।

আমি লগিং কোনও ফাইলে লগ করতেও পরিবর্তন করেছিলাম যাতে ভুল কী হয়েছে তা নির্ণয় করা আরও সহজ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.