sql-server - 使用 DBMS_PASSTHROUGH 从 Oracle 创建 SQL Server 别名

标签 sql-server oracle

我有一个带有连接到 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/

相关文章:

mysql - 根据经纬度查找用户

c++ - 使用 C++ 中的 Linux 上的 Qt 连接到 Oracle DB

java - 为什么我会收到此 SQLServerException : "The result set has no current row"

c# - 使用 LINQ (C#) 实现分页?

SQL Server : Multiple rows XML

java - Java 连接到 SQL 数据库时出现 Class.forName 错误

java - 如何通过 Hibernate 访问 Oracle DB 返回标识列的最大值?

c# - SQL查询多次返回同一条记录

oracle - 在文本字段中显示 PDF 文件的内容

oracle - Oracle 中的索引是聚簇的还是非聚簇的?