2017-01-30 5 views
2

SQL Server Native Client (SQLNCLI10)를 사용하여 하드 코드 된 연결 문자열이있는 PB Classic로 작성된 레거시 응용 프로그램을 지원하고 있습니다. 그러나 Native Client는 SQL Server 2012 이상에서 지원되지 않습니다.이 클라이언트는 2014 년에 작동하지만, supported이 아닙니다. 현재 SQLNCLI10 또는 SQLNCLI11을 사용할 수없는 SQL Server 2016을 실행하는 여러 데이터베이스가 있습니다. 이해할 수있는 한, SQL Server의 기능을 사용하지 않는 한 원시 클라이언트에 대한 업데이트를 배포 할 수 있습니다 2016 그러나 그것은 실제 해결책보다 더 많은 stop-gap 측정치처럼 보입니다. 그러나 DBParm에서 FileDNS 항목을 사용하여 새 ODBC 드라이버를 사용하기 위해 원시 클라이언트에서 DBMS를 변경하려고하면 클라이언트는 항상 DSN 파일 및 기타 연결 속성의 위치를 ​​묻는 메시지를 표시합니다.PowerBuilder Classic 12.5.2에서 SQL Server 2016에 어떻게 연결합니까?

PowerBuilder Classic에서 SQL Server 2016 (SQL Server 2016 드라이버의 경우 ODBC 13 사용)에 연결하는 가장 좋은 방법은 무엇입니까? 이것은 우리가 현재 (자세한 내용은 세정 후)를 사용하는 것입니다 : 시행 착오 후

sqlca.DBMS = 'SNC SQL Native Client(OLE DB)' 
this.DBParm = "Database='" + as_database + "',Provider='SQLNCLI10',Identity='SCOPE_IDENTITY()',TrimSpaces=1,StaticBind=0,PBCatalogOwner='dbo', appname = 'My Application' , host =' " + lower(ls_machine_name) + "' " 
+0

여기 내 DBParm 문자열입니다. 정확히 같은 문제가 있습니다 : SQLCA.DBParm = "ODBC; 드라이버 = SQL Server 용 ODBC 드라이버 13, 데이터베이스 ="+ ls_con_database + "; SERVER ="+ ls_con_server + "; Trusted_Connection = YES;" 공급자는 msodbcsql13입니다. –

+0

@MattBalent ConnectString = 후에 작은 따옴표를 삽입 하시겠습니까?이 기사는 아직 테스트 할 기회가 없었으며 기사는 10 년이 넘었습니다 ... http : // nntp- archive.sybase.com/nntp-archive/action/article/%[email protected]%3E – Elsimer

+0

아니요. 문제는 웹에있는 "DNS가없는"연결 문자열에 대한 모든 정보가 오래되었고 분명히 SQL Server에 적용되지 않는다는 것입니다. 2016 –

답변

1

, 내가 사용하여 연결할 수 있었다 다음

SQLCA.DBMS = "ODBC" 
SQLCA.DBParm = "ConnectString='Driver={ODBC Driver 13 for SQL Server};QuotedId=No;TrustServerCertificate=Yes;Encrypt=Yes;Trusted_Connection=Yes;SERVER=" + SQLCA.ServerName + ";'" 

나는 조금 더 갔다하고 시도 문자열의 Trusted_Connection 부분을 대체하는 DBParm에 UID = 및 PWD =를 추가하여 SQL 인증을받습니다. 또한 Database 매개 변수를 추가했습니다 (초기 문자열은 기본 master 데이터베이스에 연결하는 것뿐이었습니다). 마찬가지로 :

SQLCA.DBParm = "ConnectString='Driver={ODBC Driver 13 for SQL Server};QuotedId=No;TrustServerCertificate=Yes;Encrypt=Yes;UID="+SQLCA.Logid+";PWD="+SQLCA.LogPass+";SERVER=" + SQLCA.ServerName + ";Database="+SQLCA.Database+";'" 
+0

첫 번째 예제에서도 'Database'매개 변수를 사용했다고 가정합니다. –

+0

또한 TrustServerCertificate = Yes가 두 번째 예에서 DBParm의 일부입니다. Trusted_Connection 매개 변수를 의미한다고 가정합니다. –

+0

기술적으로 우리가 테스트 할 때 기본 데이터베이스를 사용하기 때문에 데이터베이스 매개 변수는 필요하지 않지만 여전히 제안 할 것입니다. TrustedConnection 대 ​​TrustedConnection에 대한 내 대답을 편집합니다. – Elsimer