পরিচয়পত্রের নাম অফে সেট করা আছে - কীভাবে এটি চালু করবেন?


111

আমার একটি মুছে ফেলা ফাইল সংরক্ষণাগার ডেটাবেস রয়েছে যা মুছে ফেলা ফাইলটির আইডি সংরক্ষণ করে, আমি চাই প্রশাসকটি ফাইলটি পুনরুদ্ধার করতে সক্ষম হবেন (পাশাপাশি ফাইলগুলি সংযোগের জন্য একই আইডি)। আমি পুরো টেবিলে পরিচয়-সন্নিবেশ নিতে চাই না, কারণ একের মাধ্যমে বৃদ্ধি দুর্দান্ত কাজ করে। আমার সন্নিবেশ TBL_Contentপদ্ধতিতে আমার কাছে এমন কিছু রয়েছে

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
SET IDENTITY_INSERT tbl_content ON
GO

ALTER procedure [dbo].[spInsertDeletedIntoTBLContent]
@ContentID int, 
...insert command...
SET IDENTITY_INSERT tbl_content OFF

তবে আমি একই ত্রুটি পেতে থাকি:

আইডিএনটিটিআইপিএসআরটি বন্ধ রাখার সময় সারণী 'টিবিএল_সন্টেন্ট' সারণীতে পরিচয় কলামের জন্য সুস্পষ্ট মান সন্নিবেশ করতে পারে না।

কোন সাহায্য?

উত্তর:


173

আপনি পরিবর্তে সঞ্চিত প্রক্রিয়া মধ্যে পরিচয় সন্নিবেশ সেট করা উচিত? দেখে মনে হচ্ছে আপনি কেবলমাত্র স্টোর করা পদ্ধতি পরিবর্তন করার সময় এটিকে সেট করছেন চেষ্টা করুন:

ALTER procedure [dbo].[spInsertDeletedIntoTBLContent]
@ContentID int, 

SET IDENTITY_INSERT tbl_content ON

...insert command...

SET IDENTITY_INSERT tbl_content OFF
GO

16

আপনি কি পরিচয়_ইন্ট্রি চালু করবেন না, রেকর্ডগুলি সন্নিবেশ করিয়ে আবার এটিকে বন্ধ করবেন?

এটার মত:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
SET IDENTITY_INSERT tbl_content ON
GO

ALTER procedure [dbo].[spInsertDeletedIntoTBLContent]
@ContentID int, 
SET IDENTITY_INSERT tbl_content ON
...insert command...
SET IDENTITY_INSERT tbl_content OFF

14

আমি বিশ্বাস করি এটি একটি একক কোয়েরি ব্যাচে করা দরকার। মূলত, জিও বিবৃতিগুলি আপনার আদেশগুলি একাধিক ব্যাচে বিভক্ত করছে এবং এটি সমস্যার কারণ হয়ে দাঁড়িয়েছে। এটিতে এটি পরিবর্তন করুন:

SET IDENTITY_INSERT tbl_content ON
/* GO */

...insert command...

SET IDENTITY_INSERT tbl_content OFF
GO

1
তুমি ঠিক. এটাই তো কথা! সন্নিবেশের জন্য পরবর্তী কমান্ড ব্যাচটি SET পরিচয় দিয়ে শুরু করা উচিত IDNITYSSTT টিবিএল_ কনটেন্ট চালু; আবার কমান্ড।
জেটেরো

9

অনুস্মারক

এসকিউএল সার্ভার কেবলমাত্র একটি টেবিলকে পরিচয়পত্রের নম্বর সেট করতে অনুমতি দেয়।

এটা কাজ করে না:

SET IDENTITY_INSERT TableA ON
SET IDENTITY_INSERT TableB ON
... INSERT ON TableA ...
... INSERT ON TableB ...
SET IDENTITY_INSERT TableA OFF
SET IDENTITY_INSERT TableB OFF

পরিবর্তে:

SET IDENTITY_INSERT TableA ON
... INSERT ON TableA ...
SET IDENTITY_INSERT TableA OFF
SET IDENTITY_INSERT TableB ON
... INSERT ON TableB ...
SET IDENTITY_INSERT TableB OFF


4

আপনার প্রশ্নের উপরে এই লাইনটি যুক্ত করুন

SET IDENTITY_INSERT tbl_content ON

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