This error message occurs when SQL server interprets the text you have given as a stored procedure and cannot find a procedure with that name.

Possible reasons:

Summary:
Syntax error in sql code, Mistyped SQL Code
Stored procedure does not exist
Stored procedure got deleted
Missing schema name of the procedure in the query
Using exec with dynamic sql
Using Unicode with osql
Using extended stored procedures like xp_cmdshell on azure environment.

In Detail:
– Mistyped SQL Code
Example:
[sql]
abcd
[/sql]

When you try to execute the above code you get the error
Msg 2812, Level 16, State 62, Line 1
Could not find stored procedure ‘abcd’.

– SQL Server interprets the single word that is sent as a query as the name of stored procedure with no parameters.

Example:
Create a stored procedure named abcd
[sql]
CREATE PROCEDURE abcd
AS
SELECT * FROM SYS.tables
[/sql]

Now try to execute the below query:
[sql]abcd[/sql]

The result would be the output of executing the procedure abcd.

So in order to avoid the above error, when querying sql server using a single word then make sure that the procedure with that name exists.

– You might expect the stored procedure with the name to exist but it isn’t.

To check if the procedure exists you can use the below query:

[sql]
SELECT * FROM SYS.PROCEDURES WHERE NAME LIKE ‘%PROCEDURENAME%’
[/sql]
replace PROCEDURENAME with the name of the procedure.

– There could be a missing schema name of the procedure in the query

procedures with schema names would be like dbo.sp_abcd , products.sp_createproduct etc.

To find the schema name of the stored procedure you can use the following query:

[sql]select SCHEMA_NAME(schema_id),* from sys.procedures[/sql]

You can also alternatively use the below query:
[sql]
sp_help ‘PROCEDURENAME’
[/sql]

– This error could also be due to using exec with dynamic sql.

Try opening and closing the braces after exec to avoid such error, also you can use sp_executesql.

[sql]

exec (@dynamicsql)
–or
exec sp_executesql @dynamicsql

[/sql]

– when using unicode with osql

osql ignores Unicode files, you need to use -u switch with the osql command.

– Using SQL Azure and extended stored procedures
you could be using azure environment and SQL Azure does not have the extended stored procedures like xp_cmdshell.

Good coding standard would be to add exec statement beofore the name of the stored procedure.

Leave a Reply

Your email address will not be published. Required fields are marked *