How do I execute a stored procedure on linked Firebird server in SQL Server 2008 - sql

I have a linked Firebird database on my SQL Server 2008 via ODBC.
I can execute a query like this and I get the wanted results:
SELECT * FROM OPENQUERY(LINKED_SERVER_NAME, 'SELECT * FROM TABLE_NAME')
Now i wonder how can I execute stored procedure with one parameter input.
I have tried:
SELECT * FROM OPENQUERY(LINKED_SERVER_NAME, 'STORED_PROCEDURE_NAME 00001')
and
EXEC LINKED_SERVER_NAME.STORED_PROCEDURE_NAME '00001'
with no success...
Any tip would be appreciated !

I dont know in MSSQL but you can try
SELECT * FROM OPENQUERY(LINKED_SERVER_NAME, 'SELECT * FROM STORED_PROCEDURE_NAME(00001)')

Related

How to Select Table SQL To Oracle

I want to select data from SQL Server to Oracle (Toad Apps).
If from Oracle to SQL Server its done like this
Insert Into M_CLASSIFICATION_ORACLE
SELECT * From OPENQUERY ([B1APPS], 'select * from V_Classification_Asset' ) AS derivedtbl_1
How about in Oracle (Toad apps)?
You can able to do it by using CREATE DATABASE LINK:
Create a Database Link to connect to SQL Server:
CREATE DATABASE LINK link-name ...
Query SQL Server using the Database Link:
SELECT * FROM sqlserver-table-name#link-name;
Documentation:
https://www.oracletutorial.com/oracle-administration/oracle-create-database-link/
Calling Stored Procedure using Database Link:
https://dba.stackexchange.com/questions/1856/running-a-stored-procedure-across-db-link

Linked Server: MO_GLOBAL.SET_POLICY_CONTEXT('S', 83);

I have a linked server (SQL Server 2008 to Oracle) and would like to know how to execute this statement before I query the data:
MO_GLOBAL.SET_POLICY_CONTEXT('S', 83);
I can query the data using this:
Select * from OPENQUERY (linkedservername, 'Select * from tablename')
But I'm not sure how to incorporate the set_policy_context statement. Appreciate any feedback.
Here's the correct statement:
EXECUTE('BEGIN apps.MO_GLOBAL.SET_POLICY_CONTEXT(''S'', 83); END;') at tablename;

How to find linked_server name in sql server management studio?

I am trying to query the following in sql server management studio:
select colname from openquery (linked_server, 'exec XX.YY.PrcName #Parameter')
When i try to give XX as linked server name i am getting an error.
Is that right or how do i find the linked_server name ?
To check linked server name :
select * from sys.sysservers
you can easily run any procedure in another server through linked server as:
exec <procedure name><parameneters> at <linked server name>
To get a list of linked servers use:
EXEC SP_LINKEDSERVERS
If you want to SELECT something from Linked server:
SELECT *
FROM [SOMESERVER\SOMEINSTANCE].somedatabase.dbo.sometable;
To EXECUTE something on linked server:
EXEC [SOMESERVER\SOMEINSTANCE].somedatabase.dbo.somestoredprocedure
SELECT *
FROM OPENQUERY([SOMESERVER\SOMEINSTANCE].somedatabase.dbo.somestoredprocedure)
More info:
sqlauthority
MSDN
You also can use sys.servers
Select * From SYS.SERVERS
When server_id = 0, this is the server name.
When server_id >0 , this is the local name of linked server.

SQL Query: How to query a function/procedure body-script

is there any Query syntax (predefined )in SQL Server can show a function/procedure body-script?
sth like:
Select * from ShowScript('MyFunctionOrProcedureName')
I think you want
exec sp_helptext 'MyFunctionOrProcedureName'

How can I get all the database names in a sql server instance using tsql?

How can I get all the database names in a sql server instance using tsql?
SELECT * FROM sys.databases
----SQL SERVER 2005 System Procedures
EXEC sp_databases
EXEC sp_helpdb
----SQL 2000 Method still works in SQL Server 2005
SELECT name
FROM sys.databases
SELECT name
FROM sys.sysdatabases
----SQL SERVER Un-Documented Procedure
EXEC sp_msForEachDB 'PRINT ''?'''
to know more about database : http://blog.sqlauthority.com/2007/05/12/sql-server-2005-list-all-the-database/
this should work on pretty much any version of sql server
USE master;
SELECT NAME FROM sysdatabases;
[edit : it could be SELECT NAME FROM sys.databases too, microsoft's website says both and i'm not on my windows box to test, sorry!]
you could also use (sql 2005 only)
USE master;
EXEC sp_databases;
And for practical use added couple of common filters:
select database_id, [name] database_name
from master.sys.databases
WHERE state <> 6 -- skip offline
AND database_id > 4 -- skip system dbs
AND HAS_DBACCESS([name]) = 1 -- with User Access
SQL 2000
use master
select name from sysdatabases
or
(no need for use master, includes database_size)
exec sp_databases