select "name" from test.dbo.stud@SQLSERVERLINK; 报错
时间: 2024-01-09 20:05:47 浏览: 78
根据您提供的信息,可能是以下两种情况之一导致的报错:
1. Oracle数据库中的对象名称没有使用双引号括起来,在使用DBLINK时需要使用双引号括起来全名引用。可以尝试使用以下SQL语句查询:
```
SELECT "name" FROM "test"."dbo"."stud"@SQLSERVERLINK;
```
2. 在创建DBLINK时,没有将连接的目标数据库的名称指定为全名,导致在查询时无法识别目标数据库。可以尝试重新创建DBLINK并指定目标数据库的全名:
```
CREATE DATABASE LINK SQLSERVERLINK
CONNECT TO username IDENTIFIED BY password
USING '//remote_server:1521/remote_service_name';
```
其中,`remote_server`是远程SQL Server的主机名或IP地址,`remote_service_name`是SQL Server的服务名。如果SQL Server是使用默认的端口1433运行的,则连接字符串应该使用以下格式:
```
'//remote_server:1433/remote_service_name'
```
请注意,如果您不确定SQL Server的服务名,请咨询您的数据库管理员。
相关问题
SELECT "name" FROM "test"."dbo"."stud"@SQLSERVERLINK;这个语句再oracle中无法执行
如果您在Oracle数据库中执行以下SQL语句:
```
SELECT "name" FROM "test"."dbo"."stud"@SQLSERVERLINK;
```
则可能收到以下错误消息:
```
ORA-00942: 表或视图不存在
```
这是因为您的查询中使用了SQL Server的表限定符“dbo”,Oracle数据库不支持该限定符。实际上,您可以在创建DBLINK时省略“dbo”限定符,例如:
```
CREATE DATABASE LINK SQLSERVERLINK
CONNECT TO username IDENTIFIED BY password
USING '//remote_server:1433/remote_service_name';
```
然后,在查询中使用无限定符的表名,例如:
```
SELECT "name" FROM "stud"@SQLSERVERLINK;
```
这样应该就可以成功查询远程SQL Server的表了。请注意,您需要将“remote_server”和“remote_service_name”替换为实际的值,并使用正确的用户名和密码。
INSERT INTO MASTER.DBO.GTA_DBS(DBNAME) SELECT name FROM MASTER.DBO.SYSDATABASES where name like 'SZL2_BONDINFO_202303%' and (version is not null or version <> 0)
这是一个 SQL 查询语句,它的作用是将符合条件的数据库名称(以'SZL2_BONDINFO_202303'开头且版本号不为空或不为0的数据库)插入到名为GTA_DBS的数据库表中的DBNAME列中。具体来说,这个语句首先从系统数据库中查询符合条件的数据库名称,然后将这些名称插入到GTA_DBS表中的DBNAME列中。
阅读全文