- 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
-
Edited by
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
-
Proposed as answer by
|
|
|
информация о разделе
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных — обсуждаем в разделе «Базы данных: общие вопросы». Убедительная просьба — соблюдать «Правила форума» и не пренебрегать «Правильным оформлением своих тем». Прежде, чем создавать тему, имеет смысл заглянуть в раздел «Базы данных: FAQ», возможно там уже есть ответ. |
Обновление базы
, Проблема с обновление базы на MS SQL Server 2008
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Добрый день, подскажите, пожалуйста, как можно обновить таблицы в базе данных, которая находиться на SQL Server’e 2008. Дело вот в чем, была база данных написанная на Access. База стала большой и требует соединения нескольких пользователей, пришлось перевести на sql server. С эти проблем нет, но пока переводили на sql сотрудники работали с базой на access и вносили данные туда. Теперь пришло время обновить базу на sql. Стандартными средствами access ни как не получается это сделать. Есть еще какие-нибудь варианты по обновлению базы. |
Akina |
|
Выгнать всех юзеров. Какие проблемы-то? |
var_fj54j |
|
Ух ты, ща попробую)))) |
var_fj54j |
|
Этот вариант, конечно данные обновляет, но возникают трудности, во-первых таблиц много и чистить каждую — долго (но это ладно можно обойтись и хранимой процедурой), а вторая трудность — есть таблицы на которые ссылаются ограничения в виде FOREIGN KEY))). Буду разбираться с ключами…. |
Akina |
|
Цитата var_fj54j @ 25.09.12, 16:11 таблиц много и чистить каждую — долго
Много — напиши скрипт ОДИН раз. Цитата var_fj54j @ 25.09.12, 16:11 таблицы на которые ссылаются ограничения в виде FOREIGN KEY При написании скрипта чисти и потом заполняй в ПРАВИЛЬНОМ порядке. |
Павел Калугин |
|
Akina идиотский вопрос, а MsSql не умеет репоикацию настраивать на акцессовский файл? |
var_fj54j |
|
Те, таблицы, которые не ссылается ограничение Foreign key обновились на ура, а вот есть связанные таблицы 4 штуки и их обновить не получается. Access выдает сообщение Ошибка сервера 3726: Невозможно удалить объект «РасхНакладные», так как на него ссылается ограничение FOREIGN KEY., пытаясь выполнить sql инструкцию DROP TABLE Таблица. Может кто знает как бороться с foreign key? |
Akina |
|
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 |
Павел Калугин |
|
Цитата Akina @ 26.09.12, 09:24 Paul_K Автору. Ну раз нет то нет. |
Игорь Акопян |
|
Цитата var_fj54j @ 26.09.12, 08:37 Невозможно удалить объект «РасхНакладные», так как на него ссылается ограничение FOREIGN KEY., пытаясь выполнить sql инструкцию DROP TABLE Таблица а где и кто вам сказал делать Drop table???? truncate делает удаление данных из таблицы, почти как delete * from tab, только быстрее |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Базы данных: SQL
- Следующая тема
[ Script execution time: 0,0417 ] [ 15 queries used ] [ Generated: 5.06.23, 12:20 GMT ]