Ich habe eine SQL Azure-Datenbank und möchte ein Skript verwenden, um alle Spaltenspeicherindizes zu löschen.Fehler beim Löschen des Indexes in SQL Azure-Datenbank: Falsche Syntax in der Nähe des Schlüsselwortes 'ON' (Benutzerkontext = dbo)
Ich verbinde mich mit SSMS mit dem SQL Admin Login des SQL Server.
ich dieses Skript bin mit:
declare @sql nvarchar(max);
set @sql = N'';
select @sql = @sql + N'DROP INDEX ' + OBJECT_SCHEMA_NAME(i.OBJECT_ID) + '.' + i.name + N' ON ' + OBJECT_SCHEMA_NAME(i.OBJECT_ID) + '.' + o.name + ';
'
FROM sys.indexes AS i INNER JOIN sys.tables AS o ON i.[object_id] = o.[object_id]
where i.name is not null and o.name is not null and i.type_desc like '%COLUMN%'
PRINT @sql;
EXEC sp_executesql @sql;
Ein Beispiel Aussage:
DROP INDEX [dbo].[CCI_MyTable] ON [dbo].[MyTable];
Wenn er gestartet wird, erzeugt dies Fehler:
Incorrect syntax near the keyword 'ON'.
Wenn ich versuche einfach:
DROP INDEX [dbo].[CCI_MyTable]
Dies erzeugt Fehler:
Cannot drop the index 'dbo.CCI_MyTable', because it does not exist or you do not have permission.**
In SSMS, kann ich der SQL Server-Administrator-Benutzer ist in der [Meister] Datenbank sehen, aber existiert nicht in der Datenbank, in der ich arbeite
Within. diese Datenbank, ich arbeite als ‚dbo‘:
SELECT USER_NAME() -- DBO
SELECT CURRENT_USER; -- DBO
Sollte nicht dbo Berechtigungen Indizes fallen zu lassen?
ASK:
Was ist der richtige Weg ist, um dies zu? Muss ich den Admin-Benutzer zu dieser Datenbank hinzufügen? Wenn dieser Benutzer existiert und ich mich mit SSMS verbinde, wäre user_name() dann dieser Benutzer und nicht dbo?
entfernen dbo von [dbo] [CCI_MyTable] und Rest Skript halten, wie es – TheGameiswar
Indizes Tabelle gebunden sind, Tabellen werden von Schemata unterschieden – TheGameiswar
Es scheint. Wie vor dem INDEX Namen mit Dbo ist das Problem. Viele Beispiele im Internet verwenden diese Notation so nicht sicher, was mein Problem ist. – tbone