Ошибка 3726 sql server

  • Remove From My Forums
  • Question

Answers

  • Hi

    Try code below to check Constraint:

    SELECT OBJECT_NAME(OBJECT_ID) AS Name_of_Constraint,
    SCHEMA_NAME(schema_id) AS SchemaName,
    OBJECT_NAME(parent_object_id) AS TableNameX,
    type_desc AS ConstraintType
    FROM sys.objects
    WHERE type_desc LIKE '%CONSTRAINT' and OBJECT_NAME(parent_object_id)='yourTable' 
    

    To DROP:

    ALTER TABLE
    yourTable
    DROP CONSTRAINT <Name_of_Constraint>

    then

    DROP TABLE <yourtable>


    Regards, Ryan Lambatan
    Please «Mark as Answer» or «Vote as Helpful»

    • Edited by

      Saturday, September 10, 2011 2:18 PM

    • Marked as answer by
      Harry SQL DBA
      Monday, September 12, 2011 1:21 AM

There are times when you want to change the text from the table to a proper case in SQL Server and here’s a small resuable function that lets you do it.

create function ConvertToTitleCase(@Text as varchar(8000))
returns varchar(8000)
as
begin
  declare @Reset bit;
  declare @Ret varchar(8000);
  declare @index int;
  declare @c char(1);

  if @Text is null
    return null;

  select @Reset = 1, @index = 1, @Ret = '';

  while (@index <= len(@Text))
    select @c = substring(@Text, @index, 1),
      @Ret = @Ret + case when @Reset = 1 then UPPER(@c) else LOWER(@c) end,
      @Reset = case when @c like '[a-zA-Z]' then 0 else 1 end,
      @index = @index + 1
  return @Ret
end

You can call the function as shown below.

declare @input varchar(8000) = 'this is a developerpublish.com portal'

select [dbo].[ConvertToTitleCase](@input)

You should see the output as shown below


  • April 17, 2004 at 9:34 pm

    #85179

    In the Transaction replication Publication agent is failing with the Error as mentioned below.

    Error number: 3726, Could not drop object ‘Tablename’ because it is referenced by a FOREIGN KEY constraint.

    Can we fix this error without dropping the table or any other method to fix please let me know.

    —sntiwary

  • Nicholas Cain

    SSC-Dedicated

    Points: 33009

    It appears as though the subscriber has a foreign key defined against the table you are attempting to snapshot. As the snapshot drops and then recreates the remote table having the foreign key constraint prevents this from happening.

    Go to the subscriber and run a sp_help against the table to see what references it and then drop the constraint, this should allow the snapshot to run without a problem.

  • Rodrigo Acosta

    SSC-Insane

    Points: 21261

    If the table already exists in the subscriber, you shound’t specify the snapshot to drop it.

    You can change that in the properties of each article.

    If you need to re create the table each time you apply the snapshot, you can use a pre snapshot script to drop the constraint, let the snapshot to drop and re create the table, and with a post script, you can re create the foreign key.

  • sntiwary

    Hall of Fame

    Points: 3475

    thank for reply. So you mean we cannot replicate the tables with foreign key or subscribers cannot have referential integrity. I Checked a KB article which tells:

    When applying the snapshot, the schema files are applied in such a way that the child tables are dropped, and then re-created before the parent tables are re-created. So, even if there are foreign key references, tables can be dropped and re-created successfully.

    http://support.microsoft.com/default.aspx?scid=kb;en-us;303218&Product=sql2k

  • Nicholas Cain

    SSC-Dedicated

    Points: 33009

    If you have the integrity enforced on the publisher (and you are replicating both tables out and these are the tables involed in the problem you are having) you don’t have to enforce it on the far end.

    However if you are using the replicated table on the far end to enforce the integrity on a table that only exists on the subscriber then as Racosta said, use a pre and post snapshot script to drop and recreate the constraint.

  • Rodrigo Acosta

    SSC-Insane

    Points: 21261

    Even if you published all tables wich are involved in the integrity validation, if you specify the snapshot to drop the table before applying the snapshot, it will fail.

    You shoudn’t drop the table in the snapshot.

  • sntiwary

    Hall of Fame

    Points: 3475

    Thanks to stacenic & racosta for the help and your clarification!!

    From your message what I understood is that if I am replicating both the tables related to Foreign key then I don’t require that foreign key to be exist at the subscriber and that can I do by unchecking the  option «Enforce Relationship for Replication»  in their tables design ?

    other option, if I want to enforce integrity at subscribers end also then I just need to include a pre and post snapshot script to drop and recreate the constraint, do you mean I need to include that in snapshot agents which has 3 steps as mention below, before the first step to drop the constraint and after its  last step to recreate the constraint.

    Snapshot agent steps:

    1.Snapshot Agent startup message.

    2.Run agent.

    3.Detect nonlogged agent shutdown.

     Please let me know if I have misunderstood.

  • Nicholas Cain

    SSC-Dedicated

    Points: 33009

    If you actually go into the properites of the publication, to the Snapshot tab it allows you to specify locations for scripts to execute before and after the snapshot is run, this would allow you to drop and recreate the constraints.

    If you are enforcing referential integrity on the publisher, replicating both tables and not making data changes on the tables on the subscriber then you don’t have to Enforce the relationship for replication as by virtue of having the integrity on the publisher side and transactionally replicating the data you will never run into the problem of parent/child relationships not working.

Viewing 8 posts — 1 through 7 (of 7 total)

  • Remove From My Forums
  • Question

  • Hello ,

    I know above error because of FOREIGN KEY constraint ,

    i dont want to remove foreign key at both the end and want source table as it is to destination

    what shoul i do…….


    Rahul Hundare

Answers

  • You can disable the constrint but that will lead your data integrity issues…but if you want still…

    ALTER TABLE tablename NOCHECK CONSTRAINT constraintname

    Do not forget to enable the constraint once you completed your delete…

    ALTER TABLE tablename WITH CHECK CHECK CONSTRAINT constraintname


    Please use Marked as Answer if my post solved your problem and use
    Vote As Helpful if a post was useful.

    • Proposed as answer by

      Saturday, August 31, 2013 3:42 PM

    • Marked as answer by
      Sofiya Li
      Thursday, September 5, 2013 7:01 AM

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    !
    информация о разделе

    user posted image Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных — обсуждаем в разделе «Базы данных: общие вопросы». Убедительная просьба — соблюдать «Правила форума» и не пренебрегать «Правильным оформлением своих тем». Прежде, чем создавать тему, имеет смысл заглянуть в раздел «Базы данных: FAQ», возможно там уже есть ответ.

    >
    Обновление базы
    , Проблема с обновление базы на MS SQL Server 2008

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    25.09.12, 13:13

      Добрый день, подскажите, пожалуйста, как можно обновить таблицы в базе данных, которая находиться на SQL Server’e 2008. Дело вот в чем, была база данных написанная на Access. База стала большой и требует соединения нескольких пользователей, пришлось перевести на sql server. С эти проблем нет, но пока переводили на sql сотрудники работали с базой на access и вносили данные туда. Теперь пришло время обновить базу на sql. Стандартными средствами access ни как не получается это сделать. Есть еще какие-нибудь варианты по обновлению базы.

      Monster

      Akina



      Сообщ.
      #2

      ,
      25.09.12, 14:07

        Выгнать всех юзеров.
        Очистить таблицы от старых данных.
        Налить туда новые.

        Какие проблемы-то?


        var_fj54j



        Сообщ.
        #3

        ,
        25.09.12, 15:02

          Ух ты, ща попробую))))


          var_fj54j



          Сообщ.
          #4

          ,
          25.09.12, 16:11

            Этот вариант, конечно данные обновляет, но возникают трудности, во-первых таблиц много и чистить каждую — долго (но это ладно можно обойтись и хранимой процедурой), а вторая трудность — есть таблицы на которые ссылаются ограничения в виде FOREIGN KEY))). Буду разбираться с ключами….

            Monster

            Akina



            Сообщ.
            #5

            ,
            25.09.12, 17:00

              Цитата var_fj54j @ 25.09.12, 16:11

              таблиц много и чистить каждую — долго

              Много — напиши скрипт ОДИН раз.
              Долго — неправда. TRUNCATE TABLE работает как из пухи…

              Цитата var_fj54j @ 25.09.12, 16:11

              таблицы на которые ссылаются ограничения в виде FOREIGN KEY

              При написании скрипта чисти и потом заполняй в ПРАВИЛЬНОМ порядке.


              Павел Калугин



              Сообщ.
              #6

              ,
              26.09.12, 06:47

                Akina идиотский вопрос, а MsSql не умеет репоикацию настраивать на акцессовский файл?


                var_fj54j



                Сообщ.
                #7

                ,
                26.09.12, 08:37

                  Те, таблицы, которые не ссылается ограничение Foreign key обновились на ура, а вот есть связанные таблицы 4 штуки и их обновить не получается. Access выдает сообщение Ошибка сервера 3726: Невозможно удалить объект «РасхНакладные», так как на него ссылается ограничение FOREIGN KEY., пытаясь выполнить sql инструкцию DROP TABLE Таблица. Может кто знает как бороться с foreign key?

                  Monster

                  Akina



                  Сообщ.
                  #8

                  ,
                  26.09.12, 09:24

                    var_fj54j
                    Повторяю:

                    Цитата Akina @ 25.09.12, 17:00

                    заполняй в ПРАВИЛЬНОМ порядке

                    И ещё повторяю:

                    Цитата Akina @ 25.09.12, 17:00

                    TRUNCATE TABLE


                    Цитата var_fj54j @ 26.09.12, 08:37

                    Может кто знает как бороться с foreign key?

                    Я знаю.
                    Во-первых, читать документацию. До понимания.
                    Во-вторых, читать то, что тебе пишут. Тоже до понимания.


                    Paul_K
                    Нет. И я даже представить не могу, кому и зачем это может понадобиться.


                    Павел Калугин



                    Сообщ.
                    #9

                    ,
                    26.09.12, 10:27

                      Цитата Akina @ 26.09.12, 09:24

                      Paul_K
                      Нет. И я даже представить не могу, кому и зачем это может понадобиться.

                      Автору. Ну раз нет то нет.


                      Игорь Акопян



                      Сообщ.
                      #10

                      ,
                      28.09.12, 06:17

                        Цитата var_fj54j @ 26.09.12, 08:37

                        Невозможно удалить объект «РасхНакладные», так как на него ссылается ограничение FOREIGN KEY., пытаясь выполнить sql инструкцию DROP TABLE Таблица

                        а где и кто вам сказал делать Drop table????

                        truncate делает удаление данных из таблицы, почти как delete * from tab, только быстрее

                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                        0 пользователей:

                        • Предыдущая тема
                        • Базы данных: SQL
                        • Следующая тема

                        Рейтинг@Mail.ru

                        [ Script execution time: 0,0417 ]   [ 15 queries used ]   [ Generated: 5.06.23, 12:20 GMT ]  

                        Понравилась статья? Поделить с друзьями:
                      • Ошибка 3714 газель некст
                      • Ошибка 3714 газель камминз
                      • Ошибка 3704 бартендер
                      • Ошибка 3703 codesys
                      • Ошибка 3702 sql server