我有一个带有连接到 SQL Server 数据库的 dblink 的 Oracle 数据库。在 Oracle 中,我尝试创建一个 SQL Server 登录名和别名,如下所示:
declare
l_num_rows number;
begin
l_num_rows := dbms_hs_passthrough.execute_immediate@MYDBLINK ('CREATE LOGIN [John.Smith] WITH PASSWORD = ''B!gdaddy12''');
commit;
execute immediate 'alter session close database link MYDBLINK';
commit;
l_num_rows := dbms_hs_passthrough.execute_immediate@MYDBLINK ('USE Testdb; exec sp_addalias [John.Smith], [HONCHO3]');
commit;
execute immediate 'alter session close database link MYDBLINK';
commit;
end;
发生的情况是创建了登录名但没有创建别名 - 无一异常(exception)。如果我尝试按以下方式创建别名两次,它确实有效,即创建了一个登录名和一个别名:
declare
l_num_rows number;
begin
l_num_rows := dbms_hs_passthrough.execute_immediate@MYDBLINK ('CREATE LOGIN [John.Smith] WITH PASSWORD = ''B!gdaddy12''');
commit;
execute immediate 'alter session close database link MYDBLINK';
commit;
l_num_rows := dbms_hs_passthrough.execute_immediate@MYDBLINK ('USE Testdb; exec sp_addalias [John.Smith], [HONCHO3]');
commit;
execute immediate 'alter session close database link MYDBLINK';
commit;
l_num_rows := dbms_hs_passthrough.execute_immediate@MYDBLINK ('USE Testdb; exec sp_addalias [John.Smith], [HONCHO3]');
commit;
execute immediate 'alter session close database link MYDBLINK';
commit;
end;
谁能指出我做错了什么?
最佳答案
你可以使用Profiler,这是一个sqlserver支持的工具。它很简单,但只有一个GUI,你可以找到如何使用DMV -> sys.traces,等等。
关于sql-server - 使用 DBMS_PASSTHROUGH 从 Oracle 创建 SQL Server 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8234273/