Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не могу удалить таблицу  [new]
Северянин
Member

Откуда:
Сообщений: 90
В БД таблица есть (во всяком случае в обозревателе объектов она видна), но ни удалить, ни переименовать я ее не могу.

SELECT OBJECT_ID('[_m_wtruancys]')
возвращает NULL, но при попытке создания таблицы из ХП, выскакивает ошибка, что такая таблица уже существует.

@@Version = Microsoft SQL Server 2012 (SP3-GDR) (KB4057115) - 11.0.6260.1 (X64)

Подскажите, как все-таки удалить эту таблицу.

Заранее благодарен

К сообщению приложен файл. Размер - 9Kb
9 окт 18, 11:59    [21699086]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Таблица, наверно, есть.
Но у вас нет прав доступа.
9 окт 18, 12:11    [21699114]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Северянин
Member

Откуда:
Сообщений: 90
iap,
Нет, у меня полные права доступа.

И да, вот еще что: таблица как бы есть, но во вкладках Столбцы, Ключи и т.д. ничего нет...
9 окт 18, 12:17    [21699124]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
ну поищите ее по части названия в системных таблицах.
типа такого:
select *
from sys.tables
where name like '%wtru%'

может, в названии какие-то непечатные символы присутствуют
9 окт 18, 12:22    [21699135]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36926
А так?

SELECT OBJECT_ID('dbo.[_m_wtruancys]')
9 окт 18, 12:35    [21699150]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Северянин
Member

Откуда:
Сообщений: 90
Yasha123
ну поищите ее по части названия в системных таблицах.
типа такого:
select *
from sys.tables
where name like '%wtru%'

может, в названии какие-то непечатные символы присутствуют


К сообщению приложен файл. Размер - 46Kb
9 окт 18, 12:43    [21699161]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Северянин
Member

Откуда:
Сообщений: 90
Гавриленко Сергей Алексеевич
А так?

SELECT OBJECT_ID('dbo.[_m_wtruancys]')


К сообщению приложен файл. Размер - 18Kb
9 окт 18, 12:44    [21699162]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Северянин
Yasha123
ну поищите ее по части названия в системных таблицах.
типа такого:
select *
from sys.tables
where name like '%wtru%'

может, в названии какие-то непечатные символы присутствуют

теперь ищите непотребный символ(ы)
declare @name nvarchar(128) = (select name from sys.tables where object_id = 1637125123)

select n, substring(@name, n, 1) as char_, unicode(substring(@name, n, 1)) as unicode_
from (values(1), (2), (3), (4), (5), (6), (7), (8), (9),
(10), (11), (12), (13), (14), (15), (16), (17), (18), (19), (20)) nums(n);
9 окт 18, 12:59    [21699177]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Северянин
Member

Откуда:
Сообщений: 90
Yasha123,
Вот результат:

Картинка с другого сайта.

И я не знаю, как удалить эту таблицу.
9 окт 18, 14:28    [21699317]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
invm
Member

Откуда: Москва
Сообщений: 9283
Северянин
И я не знаю, как удалить эту таблицу.
declare @s varchar(max);

select @s = 'drop table ' + quotename(object_schema_name(object_id)) + N'.' + quotename(name) from sys.objects where type = N'U' and name like N'%[_]m[_]wtruancys%';
print @s;
Полученную инструкцию выполнить.
9 окт 18, 14:41    [21699335]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Северянин
Member

Откуда:
Сообщений: 90
Пробую удалить так:

declare @table_name nvarchar(128) = (select name from sys.tables where object_id = 1637125123)
EXEC('drop table ' +  @table_name) 


Выдает ошибку: Не удалось удалить таблицу, т.к. не существует или отсутствуют разрешения.
9 окт 18, 14:42    [21699337]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
проверяйте базу, dbcc checkdb
9 окт 18, 14:47    [21699350]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36926
Северянин
Пробую удалить так:

declare @table_name nvarchar(128) = (select name from sys.tables where object_id = 1637125123)
EXEC('drop table ' +  @table_name) 



Выдает ошибку: Не удалось удалить таблицу, т.к. не существует или отсутствуют разрешения.
В вашей команде неполное имя без схемы.
9 окт 18, 14:50    [21699353]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Гавриленко Сергей Алексеевич
Северянин
Пробую удалить так:

declare @table_name nvarchar(128) = (select name from sys.tables where object_id = 1637125123)
EXEC('drop table ' +  @table_name) 



Выдает ошибку: Не удалось удалить таблицу, т.к. не существует или отсутствуют разрешения.
В вашей команде неполное имя без схемы.

зато в вашей команде схема есть,
а таблицу не находит все равно
21699162
9 окт 18, 14:55    [21699358]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Северянин
Member

Откуда:
Сообщений: 90
invm
Северянин
И я не знаю, как удалить эту таблицу.
declare @s varchar(max);

select @s = 'drop table ' + quotename(object_schema_name(object_id)) + N'.' + quotename(name) from sys.objects where type = N'U' and name like N'%[_]m[_]wtruancys%';
print @s;
Полученную инструкцию выполнить.


К сообщению приложен файл. Размер - 79Kb
9 окт 18, 15:08    [21699373]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Северянин
Member

Откуда:
Сообщений: 90
Yasha123
проверяйте базу, dbcc checkdb


Результаты DBCC для "MyBase".
Сообщение 8906, уровень 16, состояние 1, строка 1
Страница (1:9920) в базе данных с идентификатором 10 выделена в SGAM (1:3) и PFS (1:8088), но не выделена ни в одном объекте IAM. Флаги PFS "MIXED_EXT ALLOCATED 0_PCT_FULL".
Сообщение 8906, уровень 16, состояние 1, строка 1
Страница (1:9921) в базе данных с идентификатором 10 выделена в SGAM (1:3) и PFS (1:8088), но не выделена ни в одном объекте IAM. Флаги PFS "MIXED_EXT ALLOCATED 0_PCT_FULL".
Сообщение 8906, уровень 16, состояние 1, строка 1
Страница (1:9923) в базе данных с идентификатором 10 выделена в SGAM (1:3) и PFS (1:8088), но не выделена ни в одном объекте IAM. Флаги PFS "MIXED_EXT ALLOCATED 0_PCT_FULL".
Сообщение 8906, уровень 16, состояние 1, строка 1
Страница (1:9924) в базе данных с идентификатором 10 выделена в SGAM (1:3) и PFS (1:8088), но не выделена ни в одном объекте IAM. Флаги PFS "MIXED_EXT ALLOCATED 0_PCT_FULL".
Сообщение 8906, уровень 16, состояние 1, строка 1
Страница (1:9925) в базе данных с идентификатором 10 выделена в SGAM (1:3) и PFS (1:8088), но не выделена ни в одном объекте IAM. Флаги PFS "MIXED_EXT ALLOCATED 0_PCT_FULL".
Сообщение 8906, уровень 16, состояние 1, строка 1
Страница (1:9927) в базе данных с идентификатором 10 выделена в SGAM (1:3) и PFS (1:8088), но не выделена ни в одном объекте IAM. Флаги PFS "MIXED_EXT ALLOCATED 0_PCT_FULL".
Сообщение 8906, уровень 16, состояние 1, строка 1
Страница (1:10005) в базе данных с идентификатором 10 выделена в SGAM (1:3) и PFS (1:8088), но не выделена ни в одном объекте IAM. Флаги PFS "MIXED_EXT ALLOCATED 0_PCT_FULL".
Сообщение 2576, уровень 16, состояние 1, строка 1
На страницу карты распределения индекса (IAM) (0:0) ссылается указатель предыдущей IAM-страницы (1:10003) в объекте с идентификатором 0, идентификатором индекса -1, идентификатором секции 0, идентификатором единицы распределения 72057594920370176 (тип Unknown), однако в ходе просмотра эта страница не обнаружена.
Сообщение 2576, уровень 16, состояние 1, строка 1
На страницу карты распределения индекса (IAM) (0:0) ссылается указатель предыдущей IAM-страницы (1:10563) в объекте с идентификатором 0, идентификатором индекса -1, идентификатором секции 72057594917224448, идентификатором единицы распределения 72057594921353216 (тип Unknown), однако в ходе просмотра эта страница не обнаружена.

CHECKALLOC обнаружил 9 ошибок размещения и 0 ошибок согласованности, не связанных ни с одним объектом.
***************************************************************

Кроме как из бэкапа восстановить, сделать что-нибудь можно?
9 окт 18, 15:15    [21699381]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Северянин
Кроме как из бэкапа восстановить, сделать что-нибудь можно?

вообще PFS-страницы не чинятся, т.е. только восстановление из бэкапа.
---
хотя, на мой взгляд, полетела не PFS-страница, а первая IAM-страница той самой таблицы.
потому что как раз на ней и записаны страницы из первого mixed extent,
которые теперь сервер видит как вроде и allocated (согласно SGAM и PFS),
а вроде и никакому объекту и не принадлежат.

хочется поэкспериментировать -- забэкапьте и на копии попробуйте dbcc checkdb (MyBase, repair_allow_data_loss)
9 окт 18, 16:13    [21699456]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Северянин
Member

Откуда:
Сообщений: 90
Проблему решил так:

USE master;
GO
ALTER DATABASE MyTable
SET SINGLE_USER

DBCC CHECKDB ('MyTable', REPAIR_FAST)
DBCC CHECKDB ('MyTable', REPAIR_REBUILD)
DBCC CHECKDB ('MyTable',repair_allow_data_loss)
DBCC CHECKDB ('MyTable')

GO
ALTER DATABASE MyTable
SET MULTI_USER;
GO

USE MyTable

DROP TABLE _m_wtruancys


Всем спасибо за помощь, Яше особенно.

Ребята, без Вас я бы не справился...
9 окт 18, 16:31    [21699471]     Ответить | Цитировать Сообщить модератору
 Re: Не могу удалить таблицу  [new]
Северянин
Member

Откуда:
Сообщений: 90
Северянин,
Не 'MyTable', а 'MyBase', конечно... :)
9 окт 18, 16:33    [21699473]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить