Среда Visual Basic STUDIO’2010 Professional
Удалить индексный файл "myIdx2" предварительно проверив его существование
в базе Microsoft SQL Server.
Апробировано 13 вариантов, все неправильные:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
Try
''+-1
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.tablename') AND NAME ='indexname') BEGIN" + vbCrLf +
'"DROP INDEX myIdx2 ON SCHEMA.MyTable;END;" ' можно поставить перед Try
'' Неправильный синтаксис около ключевого слова "SCHEMA".
''+-2
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='myIdx2') BEGIN" + vbCrLf +
'"DROP INDEX myIdx2 ON SCHEMA.MyTable;END;" ' можно поставить перед Try
'' Неправильный синтаксис около ключевого слова "SCHEMA".
''+-3
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='myIdx2') BEGIN " + vbCrLf +
'"DROP INDEX myIdx2 ON SCHEMA.MyTable;END;" ' можно поставить перед Try
'' Неправильный синтаксис около ключевого слова "SCHEMA".
''+-4
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='myIdx2') BEGIN " + vbCrLf +
'"DROP INDEX myIdx2 ON MyTable;END;" ' можно поставить перед Try
'' ошибки нет, НО НЕ УДАЛЁН ИНДЕКС!
''+-5
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='myIdx2') BEGIN" + vbCrLf +
'"DROP INDEX myIdx2 ON MyTable;END;"
'' ошибки нет, НО НЕ УДАЛЁН ИНДЕКС!
' ''+-6
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='myIdx2') BEGIN " + vbCrLf +
'"DROP INDEX myIdx2 ON MyTable;END;" ' после BEGIN пробел ставлю
' ошибки нет, НО НЕ УДАЛЁН ИНДЕКС!
''+-7
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='myIdx2') BEGIN:" + vbCrLf +
'"DROP INDEX myIdx2 ON MyTable;END;" ' после BEGIN двоеточие ставлю
'Неправильный синтаксис около конструкции ":". Неправильный синтаксис около конструкции ";".
''+-8
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='schema.myIdx2') BEGIN" + vbCrLf +
'"DROP INDEX myIdx2 ON MyTable;END;"
' ошибки нет, НО НЕ УДАЛЁН ИНДЕКС!
' ''+-9
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='schema.myIdx2') BEGIN " + vbCrLf +
'"DROP INDEX myIdx2 ON MyTable;END;" ' после BEGIN пробел ставлю
'' ошибки нет, НО НЕ УДАЛЁН ИНДЕКС!
' ''+-10
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='schema.myIdx2') BEGIN " + vbCrLf +
'"DROP INDEX myIdx2 ON MyTable;END" ' после END убираю точку с запятой
'' ошибки нет, НО НЕ УДАЛЁН ИНДЕКС!
'' ''+-11
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='schema.myIdx2') BEGIN; " + vbCrLf +
'"DROP INDEX myIdx2 ON MyTable;END;" ' после END поставил точку с запятой
'' после BEGIN; поставил точку с запятой
'' ошибки нет, НО НЕ УДАЛЁН ИНДЕКС!
'' ''+-12
'Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='myIdx2') BEGIN " + vbCrLf +
'"DROP INDEX myIdx2 ON MyTable;END;" ' после END поставил точку с запятой
'' после BEGIN убрал поставленную точку с запятой
'' ошибки нет, НО НЕ УДАЛЁН ИНДЕКС!
' ''+-13
Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.MyTable') AND NAME ='schema.myIdx22') BEGIN " + vbCrLf +
"DROP INDEX myIdx2 ON MyTable;END;" ' перед "myIdx2" поставил schema
' ошибки нет, НО НЕ выведено сообщения об отсутствии файла myIdx22!
'код, который может привести к ошибке
'выполнение программы будет продолжено без ошибок
' Dim sql3 As String = "IF EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('schema.tablename') AND NAME ='indexname') BEGIN" + vbCrLf +
'"DROP INDEX PKeyMyId ON SCHEMA.MyTable;END;"
'+-1 Ссылка на объект не указывает на экземпляр объекта.
' я хотел удалить индекс "PKeyMyId"
' PKeyMyId
'+-2 Неправильный синтаксис около ключевого слова "SCHEMA".
ExecuteSQLStmt(sql3)
Catch ex As Exception
MsgBox("индекс myIdx2 НЕ существует" & vbCrLf & ex.Message)
End Try
СПАСИБО!