I am attempting to create a Stored Procedure for a newly created database. However the SSMS intellisense does not recognize more than half of the tables which have been created.
For example whilst in the left hand column under tables I have a table dbo.Room, when I type «dbo.» in the new query window, that table is not listed, in fact only 17 out of 37 tables are listed.
I can see no difference between the tables listed by intellisense and those not. If I manually type dbo.Room, it is underlined, with an error of
Invalid Object Name ‘dbo.Room’..
Have I missed something in setting up the tables?
UPDATE: I have tried refresh of the tables list (several times)
![]()
DineshDB
5,9426 gold badges32 silver badges47 bronze badges
asked Sep 1, 2009 at 13:36
1
Try:
Edit -> IntelliSense -> Refresh Local Cache
This should refresh the data cached by Intellisense to provide typeahead support and pre-execution error detection.
NOTE: Your cursor must be in the query editor for the IntelliSense menu to be visible.
ShadowFlame
2,8165 gold badges26 silver badges39 bronze badges
answered Sep 1, 2009 at 13:44
Adam RobinsonAdam Robinson
181k35 gold badges283 silver badges342 bronze badges
23
Make sure that the selected DB is the one where the table is. I was running the Script on Master. In my case, I had to switch to hr_db.

Rookie mistake but, could help someone.
answered Mar 16, 2018 at 6:17
1011010110
2,1031 gold badge18 silver badges32 bronze badges
5
Ctrl + Shift + R refreshes intellisense in management studio 2008 as well.
![]()
fedorqui
266k100 gold badges536 silver badges590 bronze badges
answered Oct 19, 2009 at 22:30
ZielynZielyn
9965 silver badges4 bronze badges
3
once you create a new SQL Server object, your newly created object does not get updated in the IntelliSence Local Cache and due to this, it shows red line underneath that object. So you just need to refresh SSMS IntelliSence Local Cache and once you refresh it, IntelliSence will automatically add newly created object in the cache and the red line will disappear. try this
Edit -> IntelliSense -> Refresh Local Cache or Ctrl + Shift + R

answered Mar 19, 2014 at 6:48
Nagaraj SNagaraj S
13.2k6 gold badges32 silver badges52 bronze badges
2
In my case, the IntelliSense cache was listing object information for an entirely different database. If I clicked the «New Query» button in SSMS, it would open a query to my default catalog on the server and that query editor would always only use that database. Refreshing the cache didn’t change anything. Restarting SSMS didn’t change anything. Changing the database didn’t change anything.
I ended up creating a query by right-clicking on the database I actually wanted to use and choosing «New Query» from that context menu. Now SSMS uses the correct objects for IntelliSense.
answered Jan 7, 2015 at 20:05
Bacon BitsBacon Bits
30k5 gold badges55 silver badges63 bronze badges
3
Are you certain that the table in question exists?
Have you refreshed the table view in the Object Explorer? This can be done by right clicking the «tables» folder and pressing the F5 key.
You may also need to reresh the Intellisense cache.
This can be done by following the menu route: Edit -> IntelliSense -> Refresh Local Cache
![]()
Himanshu
31.1k30 gold badges110 silver badges132 bronze badges
answered Sep 1, 2009 at 13:41
John SansomJohn Sansom
40.5k9 gold badges72 silver badges84 bronze badges
0
The solution is:
- Click menu Query,
- then click ‘Change Database’.
- Select your appropriate database name.
That’s it.
![]()
answered Apr 23, 2014 at 6:54
![]()
Tono FRLTono FRL
811 silver badge2 bronze badges
Same problem with me when I used this syntax problem solved.
Syntax:
Use [YourDatabaseName]
Your Query Here
answered Dec 8, 2016 at 8:45
Even after installing SP3 to SQL Server 2008 Enterprise this is still an «issue.» Ctrl+Shift+R like everyone has been saying solved this problem for me.
![]()
Himanshu
31.1k30 gold badges110 silver badges132 bronze badges
answered Nov 28, 2011 at 23:13
demmithdemmith
591 silver badge2 bronze badges
2
In azure data studio press «cmd+shift+p» and type «intellisense», then you will see an option to refresh intellisense cache.
answered Mar 5, 2020 at 23:52
pavel_orekhovpavel_orekhov
1,4322 gold badges14 silver badges33 bronze badges
did you try: right click the database, and click «refresh»
answered Sep 1, 2009 at 13:39
![]()
KM.KM.
100k33 gold badges177 silver badges210 bronze badges
1
I realize this question has already been answered, however, I had a different solution:
If you are writing a script where you drop the tables without recreating them, those tables will show as missing if you try to reference them later on.
Note: This isn’t going to happen with a script that is constantly ran, but sometimes it’s easier to have a script with queries to reerence than to type them everytime.
answered May 29, 2014 at 14:45
Troy LobergerTroy Loberger
3471 gold badge8 silver badges26 bronze badges
Solved for SSMS 2016.
Had a similar problem, but Intellisense was not in Edit menu.
What seemed to fix it was turning Intellisens on and off, right click on the SQL editor and click ‘Intellisense Enabled’. Right click again on ‘Intellisense Enabled’ to turn it back on again. Ctr Q, I also does this.
This solved the problem, and also I know get the Intellisense on the Edit menu.
answered Mar 30, 2017 at 9:23
Eric YeomanEric Yeoman
1,0361 gold badge14 silver badges31 bronze badges
I just had to close SMSS and reopen it. I tried Refresh Local Cache and that didn’t work.
answered Jun 23, 2017 at 16:21
stealthysnacksstealthysnacks
1,0911 gold badge12 silver badges16 bronze badges
I ran into the problem with :
ODBC and SQL-Server-Authentication in ODBC
and
Firedac-Connection
Solution :
I had to set the Param MetaDefSchema to sqlserver username :
FDConnection1.Params.AddPair(‘MetaDefSchema’, self.FDConnection1.Params.UserName);
The wikidoc sais :
MetaDefSchema=Default schema name. The Design time code >>excludes<< !! the schema name from the object SQL-Server-Authenticatoinname if it is equal to MetaDefSchema.
without setting, the automatic coder creates :
dbname.username.tablename -> invalid object name
With setting MetaDefSchema to sqlserver-username :
dbname.tablename -> works !
See also the embarcadero-doc at :
http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_Microsoft_SQL_Server_(FireDAC)
Hope, it helps someone else..
regards, Lutz
answered Oct 11, 2019 at 6:37
Don’t forget to create your migrations after writing the models
answered May 3, 2020 at 16:08
![]()
mgPePemgPePe
5,55712 gold badges51 silver badges81 bronze badges
For me I had rename from
[Database_LS].[schema].[TableView]
to
[Database_LS].[Database].[schema].[TableView]
answered Feb 3, 2021 at 17:24
![]()
Paul TotzkePaul Totzke
1,43017 silver badges31 bronze badges
I was working on Azure SQL Server. For storing the data I used table values param
like
DECLARE @INTERMEDIATE_TABLE3 TABLE {
x int;
}
I discovered the error in writing on the queries
SELECT
*
FROM
[@INTERMEDIATE_TABLE3]
WHERE
[@INTERMEDIATE_TABLE3].[ConsentDefinitionId] = 3
While querying the columns, it’s okay to wrap it with braces like [@INTERMEDIATE_TABLE3].[ConsentDefinitionId] but when referring to just the table valued param, there should be no params. So it should be used as @INTERMEDIATE_TABLE3
So the code now must be changed to
SELECT
*
FROM
@INTERMEDIATE_TABLE3
WHERE
[@INTERMEDIATE_TABLE3].[ConsentDefinitionId] = 3
marc_s
721k173 gold badges1320 silver badges1442 bronze badges
answered Feb 17, 2021 at 7:42
![]()
In my case, I was trying to alter a stored procedure that didn’t exist in the database, after creating it and refreshing local cache, it worked
answered Aug 10, 2021 at 15:15
![]()
I am attempting to create a Stored Procedure for a newly created database. However the SSMS intellisense does not recognize more than half of the tables which have been created.
For example whilst in the left hand column under tables I have a table dbo.Room, when I type «dbo.» in the new query window, that table is not listed, in fact only 17 out of 37 tables are listed.
I can see no difference between the tables listed by intellisense and those not. If I manually type dbo.Room, it is underlined, with an error of
Invalid Object Name ‘dbo.Room’..
Have I missed something in setting up the tables?
UPDATE: I have tried refresh of the tables list (several times)
![]()
DineshDB
5,9426 gold badges32 silver badges47 bronze badges
asked Sep 1, 2009 at 13:36
1
Try:
Edit -> IntelliSense -> Refresh Local Cache
This should refresh the data cached by Intellisense to provide typeahead support and pre-execution error detection.
NOTE: Your cursor must be in the query editor for the IntelliSense menu to be visible.
ShadowFlame
2,8165 gold badges26 silver badges39 bronze badges
answered Sep 1, 2009 at 13:44
Adam RobinsonAdam Robinson
181k35 gold badges283 silver badges342 bronze badges
23
Make sure that the selected DB is the one where the table is. I was running the Script on Master. In my case, I had to switch to hr_db.

Rookie mistake but, could help someone.
answered Mar 16, 2018 at 6:17
1011010110
2,1031 gold badge18 silver badges32 bronze badges
5
Ctrl + Shift + R refreshes intellisense in management studio 2008 as well.
![]()
fedorqui
266k100 gold badges536 silver badges590 bronze badges
answered Oct 19, 2009 at 22:30
ZielynZielyn
9965 silver badges4 bronze badges
3
once you create a new SQL Server object, your newly created object does not get updated in the IntelliSence Local Cache and due to this, it shows red line underneath that object. So you just need to refresh SSMS IntelliSence Local Cache and once you refresh it, IntelliSence will automatically add newly created object in the cache and the red line will disappear. try this
Edit -> IntelliSense -> Refresh Local Cache or Ctrl + Shift + R

answered Mar 19, 2014 at 6:48
Nagaraj SNagaraj S
13.2k6 gold badges32 silver badges52 bronze badges
2
In my case, the IntelliSense cache was listing object information for an entirely different database. If I clicked the «New Query» button in SSMS, it would open a query to my default catalog on the server and that query editor would always only use that database. Refreshing the cache didn’t change anything. Restarting SSMS didn’t change anything. Changing the database didn’t change anything.
I ended up creating a query by right-clicking on the database I actually wanted to use and choosing «New Query» from that context menu. Now SSMS uses the correct objects for IntelliSense.
answered Jan 7, 2015 at 20:05
Bacon BitsBacon Bits
30k5 gold badges55 silver badges63 bronze badges
3
Are you certain that the table in question exists?
Have you refreshed the table view in the Object Explorer? This can be done by right clicking the «tables» folder and pressing the F5 key.
You may also need to reresh the Intellisense cache.
This can be done by following the menu route: Edit -> IntelliSense -> Refresh Local Cache
![]()
Himanshu
31.1k30 gold badges110 silver badges132 bronze badges
answered Sep 1, 2009 at 13:41
John SansomJohn Sansom
40.5k9 gold badges72 silver badges84 bronze badges
0
The solution is:
- Click menu Query,
- then click ‘Change Database’.
- Select your appropriate database name.
That’s it.
![]()
answered Apr 23, 2014 at 6:54
![]()
Tono FRLTono FRL
811 silver badge2 bronze badges
Same problem with me when I used this syntax problem solved.
Syntax:
Use [YourDatabaseName]
Your Query Here
answered Dec 8, 2016 at 8:45
Even after installing SP3 to SQL Server 2008 Enterprise this is still an «issue.» Ctrl+Shift+R like everyone has been saying solved this problem for me.
![]()
Himanshu
31.1k30 gold badges110 silver badges132 bronze badges
answered Nov 28, 2011 at 23:13
demmithdemmith
591 silver badge2 bronze badges
2
In azure data studio press «cmd+shift+p» and type «intellisense», then you will see an option to refresh intellisense cache.
answered Mar 5, 2020 at 23:52
pavel_orekhovpavel_orekhov
1,4322 gold badges14 silver badges33 bronze badges
did you try: right click the database, and click «refresh»
answered Sep 1, 2009 at 13:39
![]()
KM.KM.
100k33 gold badges177 silver badges210 bronze badges
1
I realize this question has already been answered, however, I had a different solution:
If you are writing a script where you drop the tables without recreating them, those tables will show as missing if you try to reference them later on.
Note: This isn’t going to happen with a script that is constantly ran, but sometimes it’s easier to have a script with queries to reerence than to type them everytime.
answered May 29, 2014 at 14:45
Troy LobergerTroy Loberger
3471 gold badge8 silver badges26 bronze badges
Solved for SSMS 2016.
Had a similar problem, but Intellisense was not in Edit menu.
What seemed to fix it was turning Intellisens on and off, right click on the SQL editor and click ‘Intellisense Enabled’. Right click again on ‘Intellisense Enabled’ to turn it back on again. Ctr Q, I also does this.
This solved the problem, and also I know get the Intellisense on the Edit menu.
answered Mar 30, 2017 at 9:23
Eric YeomanEric Yeoman
1,0361 gold badge14 silver badges31 bronze badges
I just had to close SMSS and reopen it. I tried Refresh Local Cache and that didn’t work.
answered Jun 23, 2017 at 16:21
stealthysnacksstealthysnacks
1,0911 gold badge12 silver badges16 bronze badges
I ran into the problem with :
ODBC and SQL-Server-Authentication in ODBC
and
Firedac-Connection
Solution :
I had to set the Param MetaDefSchema to sqlserver username :
FDConnection1.Params.AddPair(‘MetaDefSchema’, self.FDConnection1.Params.UserName);
The wikidoc sais :
MetaDefSchema=Default schema name. The Design time code >>excludes<< !! the schema name from the object SQL-Server-Authenticatoinname if it is equal to MetaDefSchema.
without setting, the automatic coder creates :
dbname.username.tablename -> invalid object name
With setting MetaDefSchema to sqlserver-username :
dbname.tablename -> works !
See also the embarcadero-doc at :
http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_Microsoft_SQL_Server_(FireDAC)
Hope, it helps someone else..
regards, Lutz
answered Oct 11, 2019 at 6:37
Don’t forget to create your migrations after writing the models
answered May 3, 2020 at 16:08
![]()
mgPePemgPePe
5,55712 gold badges51 silver badges81 bronze badges
For me I had rename from
[Database_LS].[schema].[TableView]
to
[Database_LS].[Database].[schema].[TableView]
answered Feb 3, 2021 at 17:24
![]()
Paul TotzkePaul Totzke
1,43017 silver badges31 bronze badges
I was working on Azure SQL Server. For storing the data I used table values param
like
DECLARE @INTERMEDIATE_TABLE3 TABLE {
x int;
}
I discovered the error in writing on the queries
SELECT
*
FROM
[@INTERMEDIATE_TABLE3]
WHERE
[@INTERMEDIATE_TABLE3].[ConsentDefinitionId] = 3
While querying the columns, it’s okay to wrap it with braces like [@INTERMEDIATE_TABLE3].[ConsentDefinitionId] but when referring to just the table valued param, there should be no params. So it should be used as @INTERMEDIATE_TABLE3
So the code now must be changed to
SELECT
*
FROM
@INTERMEDIATE_TABLE3
WHERE
[@INTERMEDIATE_TABLE3].[ConsentDefinitionId] = 3
marc_s
721k173 gold badges1320 silver badges1442 bronze badges
answered Feb 17, 2021 at 7:42
![]()
In my case, I was trying to alter a stored procedure that didn’t exist in the database, after creating it and refreshing local cache, it worked
answered Aug 10, 2021 at 15:15
![]()
Как-то случилась у нас на предприятии «беда». Беда эта была связана с базой данных 1С Предприятия 8.2 на MS SQL 2008. Из отделов начали жаловаться на ошибку табличных частей. С программистами 1C, пытались решить данную проблему в кротчайшие сроки, но ничего на ум особого не приходило. Сам я раньше не сталкивался с такой проблемой, поэтому пришлось гуглить и искать решение проблемы. В основном попадались обрывки фраз, которые когда-то люди пытались что-то сделать, а так и не сделали. Все думаю знают, что 1С это вещь такая без которой нельзя, а хотелось бы порой… Много лишнего, проблем (недописок), не правильной структуры и т.п.
Ошибка которая начала появляться:
Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Недопустимое имя объекта "_Document179_VT3549".
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=1
Ошибка хоть и не была критичной, но не давала работать людям. Были предприняты попытки связаться с интегратором, чтобы он хоть чем-то помог. В основном поступали предложения о том, чтобы загрузить Конфигуратор и попытаться Выгрузить/Загрузить базу в .dt-файл, а также Отсоединить/Присоединить. Из-за большого объема данных, выгрузка dt-файла, заняла бы на нашем даже производительном сервере по меньшей мере сутки! Это нас не устраивало естественно. Около часа я искал в интернете решение проблемы и тут от интегратора получил сообщение следующего содержания:
Попробуйте залить в демо базу архив скажем недельной давности и проверить структуру таблиц, есть ли там например такая строчка "_Document188_VT3785"
Естественно я до этого почему-то не догадался. Был взят бэкап недельной давности, а точнее за 25 число и загружен в демо базу. В табличной части была найдена данная таблица, которая содержала порядка 2500 строк информации. А дальше, дальше я уже понял, что нужно делать. Распишу по пунктам, мало ли сам забуду или кому-нибудь пригодиться.
1. Самое немаловажное это бэкап где нет битых табличных частей и структур. Если он у вас есть, значит переходим ко второй части. Если нет, то думаем кого пинать и ругать, т.к. это неотъемлемая часть в сохранности информации в компании.
2. Заливаем бэкап в демо базу. Я не использовал консоль, у меня есть Microsoft Managment Studio 2008, поэтому мне было проще. Кто любит извращаться с помощью консоли — Бога ради, пусть делает запросы с помощью нее.
3. Собираем все ошибки воедино, т.е. те которые появляются у пользователей на Недопустимое имя объекта. У меня их обнаружилось всего две, но есть подозрение, что их гораздо больше. (Ошибка таблицы «_Document179_VT3549» и «_Document188_VT3785»).
4. Смотрим в «Плохую базу» есть ли такие табличные части. Если нет, а их скорее всего нет делаем следующее в демо базе: Находим строку dbo._Document179_VT3549 —> Нажимаем правой кнопкой мыши и выбираем Создать сценарий для таблицы —> Используя CREATE —> Новое окно редактора запросов.
Появиться окно с запросом CREATE:
USE [Torg_demo]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[_Document179_VT3549](
[_Document188_IDRRef] [binary](16) NOT NULL,
[_KeyField] [binary](4) NOT NULL,
[_LineNo3786] [numeric](5, 0) NOT NULL,
[_Fld3787RRef] [binary](16) NOT NULL,
[_Fld3788RRef] [binary](16) NOT NULL,
[_Fld3789RRef] [binary](16) NOT NULL,
[_Fld3790RRef] [binary](16) NOT NULL,
[_Fld3791] [numeric](15, 3) NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
Выполняем его на «Плохой базе» предварительно изменив USE [Torg_demo] на USE [Torg]. В результате этого запроса, будет создана таблица. Проделываем данный пункт со всеми табличными частями к которым утрачен доступ и которые требуется создать заново. Напомню мне нужно было создать 2-е таблицы «_Document179_VT3549» и «_Document188_VT3785».
5. В «Здоровой базе» — демо, делаем следующее с таблицами которые нам требуется восстановить. Находим строку dbo._Document179_VT3549 —> Нажимаем правой кнопкой мыши и выбираем Создать сценарий для таблицы —> Используя SELECT, затем Используя INSERT. Должно появиться 2-а запроса (заготовки) к базе данных, которые обращаются к табличным частям. Их требуется объединить в один, по моему принципу: INSERT INTO <название таблицы> SELECT <имя столбца>,… FROM <название таблицы>. Данный запрос перенесет все данные которые были в демо базе в основную.
Пример:
INSERT INTO [Плохая база].[dbo].[_Reference120_VT120]
([_Reference120_IDRRef]
,[_KeyField]
,[_LineNo1924]
,[_Fld1925RRef]
,[_Fld1926RRef])
SELECT
[_Reference120_IDRRef]
,[_KeyField]
,[_LineNo1924]
,[_Fld1925RRef]
,[_Fld1926RRef])
FROM [Здоровая база].[dbo].[_Reference120_VT120]
GO
Конечный вариант который получился у меня для одной таблицы (проделываем со всеми, то же самое по-аналогии):
INSERT INTO [Torg].[dbo].[_Document179_VT3549]
([_Document179_IDRRef
,[_KeyField]
,[_LineNo3550
,[_Fld3551RRef]
,[_Fld3552RRef]
,[_Fld3553RRef]
,[_Fld3554]
,[_Fld3555]
,[_Fld3556]
,[_Fld3557]
,[_Fld7555]
,[_Fld9166]
,[_Fld9167RRef]
,[_Fld9168RRef]
,[_Fld9169RRef])
SELECT
[_Document179_IDRRef]
,[_KeyField]
,[_LineNo3550]
,[_Fld3551RRef]
,[_Fld3552RRef]
,[_Fld3553RRef]
,[_Fld3554]
,[_Fld3555]
,[_Fld3556]
,[_Fld3557]
,[_Fld7555]
,[_Fld9166]
,[_Fld9167RRef]
,[_Fld9168RRef]
,[_Fld9169RRef]
FROM [Torg_demo].[dbo].[_Document179_VT3549]
GO
После этого, можно расслабиться не на долго. Все должно работать. Табличные части восстановлены, запросы которые выполняют пользователи при обращении к базе данных проходят корректно, и клиент не ругается на ошибку СУБД. Надеюсь моя запись будет полезна кому-то.
P.S: бросать данную проблему при возникновении не стоит, т.к. можно «огрести» много проблем в дальнейшем.
P.P.S: прошу прощения, что нет картинок на данном этапе.
I’m trying to execute an Insert statement, but keep getting a Invalid object name error.
Here’s my code:
public string addNewComment(int userID, int pageID, string title, string comment)
{
string query = "INSERT INTO dbo.nokernok_kommentarer (userID, pageID, commentTitle, comment) " +
"VALUES ("+ userID +", "+ pageID +", '"+ title +"', '"+ comment +"')";
adapter.InsertCommand = new SqlCommand(query, connection);
//ExecuteNonQuery retuens number of rows affected
int numRows = adapter.InsertCommand.ExecuteNonQuery();
return numRows.ToString();
}
And here is my error message:
System.Data.SqlClient.SqlException:
Invalid object name
‘dbo.nokernok_kommentarer’. at
System.Data.SqlClient.SqlConnection.OnError(SqlException
exception, Boolean breakConnection) at
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection) at
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject
stateObj) at
System.Data.SqlClient.TdsParser.Run(RunBehavior
runBehavior, SqlCommand cmdHandler,
SqlDataReader dataStream,
BulkCopySimpleResultSet
bulkCopyHandler, TdsParserStateObject
stateObj) at
System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String
methodName, Boolean async) at
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult
result, String methodName, Boolean
sendToPipe) at
System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at
development.DAL.nokernokDAL.addNewComment(Int32
userID, Int32 pageID, String title,
String comment) in
C:InetpubwwwrootnaafDALnokernok.cs:line
49
Can anyone help me figure out why I get this error?
UPDATE
I should be using the correct database, because the following query works:
public DataSet getSchools(string countyCode)
{
DataSet ds = new DataSet();
string query = "SELECT * FROM nokernok_skoler WHERE kommunekode LIKE '" + countyCode.Substring(0, 2) + "%' ORDER BY enhetsnavn";
adapter.SelectCommand = new SqlCommand(query, connection);
adapter.Fill(ds);
return ds;
}
My connection string looks like this:
SqlConnection connection = new SqlConnection();
SqlDataAdapter adapter = new SqlDataAdapter();
// class constructor
public nokernokDAL()
{
connection.ConnectionString = EPiServer.Global.EPConfig["EPsConnection"].ToString();
connection.Open();
}
I’m trying to execute an Insert statement, but keep getting a Invalid object name error.
Here’s my code:
public string addNewComment(int userID, int pageID, string title, string comment)
{
string query = "INSERT INTO dbo.nokernok_kommentarer (userID, pageID, commentTitle, comment) " +
"VALUES ("+ userID +", "+ pageID +", '"+ title +"', '"+ comment +"')";
adapter.InsertCommand = new SqlCommand(query, connection);
//ExecuteNonQuery retuens number of rows affected
int numRows = adapter.InsertCommand.ExecuteNonQuery();
return numRows.ToString();
}
And here is my error message:
System.Data.SqlClient.SqlException:
Invalid object name
‘dbo.nokernok_kommentarer’. at
System.Data.SqlClient.SqlConnection.OnError(SqlException
exception, Boolean breakConnection) at
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection) at
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject
stateObj) at
System.Data.SqlClient.TdsParser.Run(RunBehavior
runBehavior, SqlCommand cmdHandler,
SqlDataReader dataStream,
BulkCopySimpleResultSet
bulkCopyHandler, TdsParserStateObject
stateObj) at
System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String
methodName, Boolean async) at
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult
result, String methodName, Boolean
sendToPipe) at
System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at
development.DAL.nokernokDAL.addNewComment(Int32
userID, Int32 pageID, String title,
String comment) in
C:InetpubwwwrootnaafDALnokernok.cs:line
49
Can anyone help me figure out why I get this error?
UPDATE
I should be using the correct database, because the following query works:
public DataSet getSchools(string countyCode)
{
DataSet ds = new DataSet();
string query = "SELECT * FROM nokernok_skoler WHERE kommunekode LIKE '" + countyCode.Substring(0, 2) + "%' ORDER BY enhetsnavn";
adapter.SelectCommand = new SqlCommand(query, connection);
adapter.Fill(ds);
return ds;
}
My connection string looks like this:
SqlConnection connection = new SqlConnection();
SqlDataAdapter adapter = new SqlDataAdapter();
// class constructor
public nokernokDAL()
{
connection.ConnectionString = EPiServer.Global.EPConfig["EPsConnection"].ToString();
connection.Open();
}
В данной статье перечислены наиболее часто возникающие ошибки при работе программ в SQL режиме и описаны способы их устранения.
Содержание
- 1 Недопустимое имя объекта DOCS (или DO1DATA)
- 2 В Альта-ГТД не работает поиск
- 3 Невозможно подключиться к серверу с удаленной машины
- 4 При работе с программой внезапно теряется подключение к серверу
- 5 На локальной (удаленной) машине невозможно подключиться к SQL-серверу (Сервер не найден)
- 6 «Разрешение CREATE DATABASE запрещено в базе данных «master» при создании БД
- 7 «Ошибка операции CREATE DATABASE. Некоторые из перечисленных имен файлов не были созданы» при созднии БД
- 8 «Не удаётся найти указанного поставщика»(или «Не найдена указанная процедура», или «Неизвестное имя класса»,или «Разрушительный сбой»)при подключении к БД
- 9 Locking optimistic failed: user with class identifier…
- 10 Несоответствующий (ошибочный, и т.д.) лог-файл *.ldf
- 11 База данных находится в режиме «Подозрительный»
Недопустимое имя объекта DOCS (или DO1DATA)
Данная ошибка обычно возникает при первичном подключении к базе данных ГТД.
Для устранения ошибки сделайте следующее:
- Откройте SQL Server Managment Studio, подключитесь к серверу
- Откройте файл (Файл — Открыть — Файл) DOCS.SQL (для DO1DATA — DO1DATA.SQL), который находится в папке UTILS с установленной программой ГТД (при установке по умолчанию это C:Alta)
- Выберите из списка (рядом с кнопкой Выполнить) базу данных, в которой произошла ошибка
- Нажмите кнопку Выполнить
В Альта-ГТД не работает поиск
Возможные проблемы:
- не установлена служба полнотекстового поиска: переустановить SQL сервер, при переустановке не забыть поставить галку на «Компонент Full-Text Search»
- не запущена служба полнотекстового поиска: запустить службу, в параметрах запуска установить Авто
- служба полнотекстового поиска не запускается с ошибкой «Интерфейс не поддерживается», либо такая ошибка выскакивает при поиске: переустановить SQL-сервер
- при поиске выдается сообщение об ошибке «Служба не запущена», хотя она запущена, либо какая то еще ошибка: запустить скрипт FullText.sql (если каталог уже существует, будет выдана ошибка, но это не страшно), затем ConvertFtcLng.sql (выдается сообщение: «Внимание! Таблица или индексированное представление «dbo.Docs» имеет столбцы полнотекстового индекса… » — это нормально)
Невозможно подключиться к серверу с удаленной машины
Возможные проблемы:
- брандмауэр windows или установленный антивирус блокирует порт 1433: все отключить и проверить соединение
- на сервере не включен протокол TCP/IP: открыть Диспетчер конфигурации SQL сервер, включить протокол, перезапустить службу SQL-сервера
При работе с программой внезапно теряется подключение к серверу
Возможные проблемы:
- некорректно работает протокол «Общая память»: в Диспетчере конфигурации отключить протокол Общая память, включить протокол TCP/IP и перезапустить службу SQL-севера
- нарушается таблица маршрутизации вследствии каких-либо причин (н-р установка подключения к интернет через модем): использовать в качестве имени сервера его ip-адрес
- ERRORLOG в папке sql сервера сильно вырос и не может переименоваться на ERRORLOG.1*, для создания нового. Тут, возможно, не хватает прав на внесение изменений в этой папке(необходимо админам проверить), либо кривая установка SQL сервера(Остановить службу SQL сервера и удалить вручную C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLLOGERRORLOG, если не помогло, переустановка).
На локальной (удаленной) машине невозможно подключиться к SQL-серверу (Сервер не найден)
Возможно, установлен именованный instance SQL-сервера: указать в настройках ИМЯ_СЕРВЕРАИНСТАНС (обычно это SQLEXPRESS)
«Разрешение CREATE DATABASE запрещено в базе данных «master» при создании БД
У пользователя, под которым было произведено подключение к SQL-серверу, нет прав на создание новой базы данных: необходимо залогиниться под пользователем sa или другим пользователем с правами администратора
«Ошибка операции CREATE DATABASE. Некоторые из перечисленных имен файлов не были созданы» при созднии БД
Проблема: база данных не подключена к серверу, однако сами файлы базы данных по какой то причине присутствуют в системном каталоге DATA SQL-сервера: присоедините базу данных, для чего
- Откройте SQL Server Managment Studio, подключитесь к серверу
- Кликните правой кнопкой мыши по Базам данных, в контекстном меню выберите пункт Присоединить
- В появившемся окне нажмите кнопку Добавить и выберите нужный файл *.mdf, нажмите ОК
- Нажмите ОК
«Не удаётся найти указанного поставщика»(или «Не найдена указанная процедура», или «Неизвестное имя класса»,или «Разрушительный сбой»)при подключении к БД
Проблема: иногда после установки автоматических обновлений Windows (или по другим неустановленным причинам) на компьютере происходит повреждение системных компонентов доступа к базам данных «Microsoft/Windows Data Access Components» (MDAC/WDAC), в частности их составляющих – «ActiveX Data Objects» (ADO) и/или «OLEDB-провайдеров».
Решение:
Поскольку, начиная с Windows XP SP2 и Server 2003, данные компоненты (MDAC) считаются неотъемлемой частью операционной системы, а, начиная с Windows Vista и Server 2008, они переименованы в «Windows Data Access Components» (WDAC) и более не распространяются в виде отдельного инсталлятора, то наилучшим решением является переустановка операционной системы или восстановление ее из резервной копии (при наличии таковой) на состояние до сбоя.
Однако в виду трудоемкости данной операции можно для начала попробовать (на свой страх и риск) более «мягкие» способы решения проблемы, которые будут различаться в зависимости от установленной версии Windows:
Для старых ОС (до Windows XP SP1 включительно): Достаточно просто переустановить компоненты MDAC, скачав инсталлятор с сайта Microsoft.
Для Windows XP SP2/SP3 и Server 2003:
Вариант 1 (только для XP). Воспользоваться вышеупомянутым инсталлятором, однако перед его запуском зайти в свойства файла MDAC_TYP.EXE и включить режим совместимости с Windows 2000. Это позволит избежать сообщения о «несовместимости с данной версией Windows», но по сути будут установлены ровно те же компоненты, что идут в составе Windows XP SP2/SP3.
Вариант 2. Переустановить только компоненты MDAC, используя оригинальный дистрибутив Windows, с которого происходила установка ОС. Для этого, открыть папку C:WindowsInf (если ее не видно, включить показ скрытых папок/файлов в «свойствах папки»), нажать правой кнопкой мыши на файле MDAC.INF и выбрать пункт «Установить». При первом запросе «вставить диск» указать путь C:WindowsServicePackFilesi386, при втором – путь к папке i386 дистрибутива Windows, с которого происходила первоначальная установка ОС. Более подробно можно прочитать в статье Microsoft.
Вариант 3 (частичное восстановление!). Скопировать с другого компьютера (где установлена такая же ОС и все работает) содержимое папок:
C:Program FilesCommon FilesSystemado
C:Program FilesCommon FilesSystemOle DB
И зарегистрировать основные DLL командами (Пуск→Выполнить):
regsvr32 «C:Program FilesCommon FilesSystemadomsado15.dll»
regsvr32 «C:Program FilesCommon FilesSystemOle DBoledb32.dll»
regsvr32 «C:Program FilesCommon FilesSystemOle DBsqloledb.dll»
Для Windows Vista, Sever 2008 и более поздних:
Для этих ОС изначально не существует отдельно распространяемого инсталлятора WDAC, кроме того, там применяется технология Windows File Protection (WFP), которая защищает системные файлы от любых «несанкционированных» изменений, поэтому единственный возможный способ избежать переустановки системы – это как раз понадеяться, что WFP восстановит поврежденные файлы WDAC.
Чтобы запустить сканирование системы с восстановлением поврежденных файлов надо зайти в меню «Пуск→Все программы→Стандартные», нажать правой кнопкой мыши на пункте «Командная строка» и выбрать «Запуск от имени администратора». В окне командной строки набрать команду и нажать Enter: SFC /SCANNOW
Если ничего не будет восстановлено или это не поможет, то можно попробовать из той же командной строки выполнить регистрацию DLL-файлов, перечисленных в вар.3 предыдущего раздела.
Кроме того, теоретически может помочь откат последних обновлений (которые привели к сбою) и/или установка последнего ServicePack для данной ОС.
- если выше указанные действия не помогли, скопировать целиком обе папки OLEDB и ADO с другой машины с АНАЛОГИЧНОЙ операционкой и также перерегистрировать указанные dll-ки
- установить/переустановить SQL сервер на проблемной машине
- если все перечисленные способы не помогли, попробовать сделать откат системы, либо переустановить операционку
Locking optimistic failed: user with class identifier…
Ошибка означает, что повторно удаляется или записывается одна и та же запись в таблицу SQL. Лечится перезапуском SQL сервера.
Несоответствующий (ошибочный, и т.д.) лог-файл *.ldf
В этом случае необходимо выполнить ОДИН из скриптов. Естественно указав корректный путь к файлу базы и задав нужное имя БД. При этом сам битый файл *.ldf должен отсутствовать
- Первый скрипт:
USE [master] GO EXEC sp_attach_single_file_db @dbname='gtd', @physname=N'C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAgtd.mdf' GO
- Второй скрипт:
USE [master] GO CREATE DATABASE gtd ON (FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAgtd.mdf') FOR ATTACH_REBUILD_LOG GO
База данных находится в режиме «Подозрительный»
Необходимо выполнить скрипт (заменить везде название базы, если она отличается от gtd):
alter database gtd set emergency alter database gtd set single_user go DBCC CHECKDB (gtd, REPAIR_ALLOW_DATA_LOSS) with NO_INFOMSGS go alter database gtd set multi_user go
17.06.20 — 10:18
Всем привет, пытаюсь победить ошибку бд, появилась после добавления реквизита справочнику в расширении, справочник Организации, был заимствован из основной конфигурации, раньше в него уже добавлялись реквизиты.
В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта «dbo._Reference374X1».
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=1
Реструктуризация вываливается в эту же ошибку когда доходит до спр. Организации, ни выгрузить базу, ни обновить, ни вернуться к конфигурации БД тоже не дает.
Платформа 8.3.17.1386
1 — 17.06.20 — 10:21
расширение добавлено в комплексную автоматизацию 2.4.10.62, в него передан спр. организации, добавил туда реквизит «ОсновнойБанковскийСчет», с типом счета организаций, и при обновлении конфигурации БД, получил эту ошибку.
2 — 17.06.20 — 10:26
База серверная, заглянул в БД, там такой таблицы нет, есть только dbo._Reference374 и она пуста, попутно заглянул в оригинал базы, там эта таблица есть [dbo].[_Reference374X1], и это справочник организации!
получается у меня в копии пропал справочник организации после добавления реквизита в расширение?!
3 — 17.06.20 — 11:05
в оригинальной базе, сгенерил скрипт CREATE для этой таблицы _Reference374X1, создал такую же таблицу этим скриптом, перезапустил конфигуратор, обновляю базу и получаю следующую ошибку:
В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта «dbo._Reference374_VT56976X1».
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=1
4 — 17.06.20 — 11:06
Похоже в процессе обновления были утеряны таблицы в базе! я с таким впервые сталкиваюсь!
пойду создавать следующую таблицу…
5 — 17.06.20 — 11:22
Сверил таблицы с этим индексом в копии где они были утеряны и в рабочей базе, в копии удалены 3 таблицы с префиксом X1
dbo._Reference374X1
dbo._Reference374_VT56976X1
dbo._Reference374_VT56992X1
создал эти таблицы, и база заработала, в витруальных таблицах ничего не было а вот dbo._Reference374X1 содержала данные об организациях.
6 — 17.06.20 — 11:27
справочник организаций теперь ожидаемо пуст, я конечно перенесу содержимое таблицы dbo._Reference374X1 из оригинала базы в свою копию чтобы вернуть содержимое справочника, но это вообще нормально затирать таблицы при обновлении?!
Вот такой глюк случился с расширением, может кому пригодится, сейчас буду пробовать добавить свой реквизит еще раз 🙂
7 — 17.06.20 — 11:33
резервную копию сделайте.
8 — 17.06.20 — 12:55
Вернул данные в таблицы вот таким скриптом:
/*Создать процедуру выгрузки*/
CREATE PROCEDURE dbo.myproc5
As
SET NOCOUNT ON;
SELECT TOP (99999)
*
FROM [SourceBase].[dbo].[_Reference374_VT56976X1]
/*Создать процедуру выгрузки*/
Insert into [DestinationBase].[dbo].[_Reference374_VT56976X1]
EXECUTE [dbo].[myproc5]
GO
/*Для удаления хранимой процедуры*/
DROP PROCEDURE IF EXISTS [dbo].[myproc5]
GO
9 — 17.06.20 — 13:05
Добавил реквизит в расширение еще раз и при обновлении базы получаю ошибку:
Ошибка при выполнении операции с инфо базой
Внутренняя ошибка: попытка переключить менеджер имен базы данных без сохранения информации
10 — 17.06.20 — 13:07
Таблицы справочника снова удалены в базе…
11 — 17.06.20 — 13:12
пока не знаю что с этим делать, завтра буду удалять расширение, что-то разочаровался я в этих расширениях, если справочники целиком исчезают из базы, то нафиг такое счастье нужно, лучше по старинке реквизиты добавлять.
Похоже здесь никто с подобным не сталкивался.
12 — 17.06.20 — 13:50
(0)
научитесь пользоваться технологическим журналом 1с8.
13 — 17.06.20 — 13:57
Передаю: в расширении, к твоему справочнику к которому добавил свои реквизиты, добавь еще один ЛЮБОГО типа и сохрани (через бочок). таблица …X1 при сохранении будет перестыковатся с основной таблице.
Потом удаляй этот левый реквизит из расширения и сохраняй.
14 — 17.06.20 — 14:02
допустим Reference374 — основная таблица конфы справочника Организации
При добавлении справочника Организации в расширении, создается новая таблица Reference374X1. Все данные из Reference374 копируются в Reference374X1. При удалении справочника из расширении, соответственно происходит обратная миграция данных из X1 в основную.
15 — 17.06.20 — 16:44
Спасибо, завтра попробую, у меня сейчас почти полночь.
есть подозрение что это связано с типом нового реквизита, раньше добавлял рекв. базовых типов а этот с типом справочника.
кстати, когда удаляются таблицы Х1, основная табл тоже остается пустой, данные туда не возвращаются.
16 — 17.06.20 — 16:55
1) отрезать расширение.
2) обновить базу.
3) прицепить расширение взад.
— ммм?…
17 — 17.06.20 — 17:03
(16) так данные реквизитов расширения будут потеряны.
(14) попробовал вариант с добавлением/удалением еще одного реквизита, база не обновляет конфу бд, выдает ошибку «Попытка переключить менеджер имен базы данных без сохранения информации».
18 — 17.06.20 — 17:04
что это вообще за ошибка кто такой менеджер имен? 🙂
19 — 18.06.20 — 08:59
(18) не званный гости))
20 — 18.06.20 — 09:00
к конфе бд не вернутся?
Trance_1C
21 — 18.06.20 — 11:26
(20) Нет, этот пункт не активен, самое неприятное что при неудачной попытке обновления, вроде и обновление не проходит и отменить изменения невозможно. Если даже удалить добавленные реквизиты, после которых возникла ошибка, ничего не меняется все время ошибка — «Попытка переключить менеджер имен базы данных без сохранения информации».
Hi,
I hope I’m in the right place, apologies if not.
We have a WebApp that was created by a developer who’s long since moved on. It has been working perfectly up until recently, but now it’s failing with the following SQL errors:
System.Data.SqlClient.SqlException: Invalid object name ‘Progress’.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
at SQLServer.GetDataSet(SqlCommand Command, String ConnectionStringName)
and
System.Data.SqlClient.SqlException: Could not find stored procedure ‘Audit_Save’.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at SQLServer.DoNonQuery(SqlCommand& Command, String ConnectionStringName)
and
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 05/06/2018 14:47:18
Event time (UTC): 05/06/2018 13:47:18
Event ID: 3e565b08be474da29f5cde3d5568b52f
Event sequence: 11
Event occurrence: 2
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/7/ROOT-1-131726794783861033
Trust level: Full
Application Virtual Path: /
Application Path: C:inetpubwwwrootADRegistrationPasswordPolicy
Machine name: ISAMS
Process information:
Process ID: 1932
Process name: w3wp.exe
Account name: IIS APPPOOLAD Registration Revamp
Exception information:
Exception type: IndexOutOfRangeException
Exception message: Cannot find table 0.
Request information:
Request URL: https://registration.xxxxxxxxxxxxxx.net:443/Register1.aspx
Request path: /Register1.aspx
User host address:
User:
Is authenticated: False
Authentication Type:
Thread account name: DOMAINUSER
Thread information:
Thread ID: 8
Thread account name: DOMAINUSER
Is impersonating: False
Stack trace: at System.Data.DataTableCollection.get_Item(Int32 index)
at Progress.Find(String ParentEmail, String PassInt, String PassText)
at Register1.cmdSubmit_Click(Object sender, EventArgs e)
at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
The table and stored procedure still exist. The user account it’s using to access the SQL server has not changed, and can still access the database. The web.config file has not changed, the connection strings are just as they were.
The only thing that has changed from what I can see is that the server’s have had updates applied, but none that I can see would have affected SQL.
All ideas warmly welcome 🙂
Andrew
Andrew France — http://andrewsprivatecloud.wordpress.com