SQL 서버에서 MySql 서버의 데이터에 액세스하려고 시도한 후 문제가 발생했습니다. 여기까지 내가 지금까지 한 일이 있습니다.
1)이 사이트 내가 열어 내 MSQLSMS에서 지금 http://sql-articles.com/blogs/creating-linked-server-to-mysql-from-sql-server/OPENQUERY를 실행하여 MySql 서버에서 데이터를 가져 와서 PDO를 사용하여 PHP 스크립트에서 SQL 테이블에 조인 하시겠습니까?
의 지시 다음 Microsoft SQL 서버 Managment를 S (MSQLSMS) 에서 링크 서버를 생성 2) 내 SQL 서버에서 MySQL ODBC 드라이버 5.2w 설치 "SERV1"라는 서버에 연결 다음 쿼리를 실행하고 아무 문제없이 작동합니다.
SELECT
p.team_name,
p.fullname,
SUM(ISNULL(i.CallDurationSeconds, 0)) AS totalTime
FROM OPENQUERY(SERVPHP, 'SELECT
CAST(t.name AS CHAR) AS team_name,
CAST(TRIM(REPLACE(CONCAT(su.first_name, " ", su.middle_name , " ", su.last_name), " ", " ")) AS CHAR) AS fullname,
CAST(su.login_user AS CHAR) AS username,
CAST(p.account_id AS UNSIGNED) AS account_id
FROM call_managment_system.phone_calls AS p
INNER JOIN call_managment_system.users AS su ON p.owner_id = su.user_id
INNER JOIN call_managment_system.teams AS t ON su.team_id = t.team_id
WHERE p.status = 2 AND t.client_id = 1 AND p.last_attempt_on BETWEEN "2013-01-01 08:00:00" AND "2013-04-30 07:00:00"
GROUP BY t.team_id, p.owner_id') AS p
INNER
JOIN OPENQUERY(SERVPHP, 'SELECT
CAST(cn.contact_number AS CHAR) AS phone_number,
CAST(cn.account_id AS UNSIGNED) AS account_id
FROM call_managment_system.contact_numbers AS cn
WHERE cn.contact_link = "Account"
UNION
SELECT CAST(cn2.contact_number AS CHAR) AS phone_number,
CAST(cn2.account_id AS UNSIGNED) AS account_id
FROM call_managment_system.contact_personal AS cp
INNER JOIN call_managment_system.contact_numbers AS cn2 ON cn2.person_id = cp.person_id AND cn2.contact_link = "Account" ') AS cn ON cn.account_id = p.account_id
INNER
JOIN I3_IC.dbo.CallDetail AS i ON p.username = i.LocalUserId AND RIGHT(i.RemoteNumber, 10) = cn.phone_number
WHERE i.I3TimeStampGMT BETWEEN '2013-01-01 08:00:00' AND '2013-04-30 07:00:00'
GROUP BY p.team_name, p.fullname
지금 나는이 쿼리를 실행하기 위해 PHP를 사용하고 있습니다. 나는 다음을 수행했습니다 1) 이전에이 쿼리를 실행 한 SQL 서버 "SERV1"에 PDO API를 사용하여 연결합니다. 2) 위와 동일한 쿼리를 실행하십시오. 하지만 이번에는 해결할 수없는 부분에서 오류가 발생합니다.
치명적인 오류 : 'SQLSTATE [42000] : [Microsoft] [SQL Server Native Client 10.0] [SQL 서버]'DBOException '오류로 인해'OLE DB 공급자 'MSDASQL의 데이터 소스 객체를 초기화 할 수 없습니다. "SERVPHP"
"SERVPHP"는 PHP 응용 프로그램이 실행되고 MySql 서버가 실행중인 서버입니다. SQL Server가 실행중인 위치와 ODBC 드라이버를 설치 한 위치가 "SERV1"입니다. 내 PHP 응용 프로그램에서이 쿼리 같은 방법으로 실행하면
더, 는 왜 지금 노력하고 있습니다
SELECT
LocalUserId AS loginName,
RemoteNumber AS PhoneNumber,
SUM(CallDurationSeconds) AS totalTalk
FROM CallDetail
WHERE LocalUserId = 'test' AND
I3TimeStampGMT BETWEEN '2013-01-01 08:00:00' AND '2013-04-30 07:00:00'
GROUP BY LocalUserId, RemoteNumber
작동? PHP 서버에서이 쿼리를 실행하려면 무엇이 필요합니까?
감사합니다.
오류 메시지를 보면 서버 또는 호스트에 Microsoft 웹 사이트에서 다운로드 할 수있는 서버 기본 클라이언트가 누락 된 것 같습니다. 불행히도 설치를 찾는 데 많은 어려움을 겪었으므로 열심히 살펴야합니다. –
Management Studio에서 쿼리를 실행할 수는 있지만 PHP가 아니라면 오류 메시지가 표시 될 수 있습니다. 이는 권한 또는 부족으로 인한 것일 수 있습니다. –
@DanBracuk MSSQL PDO 용 드라이버를 설치하려고 할 때; 이 누락 된 드라이버로 인해 PHP에서 어떤 쿼리도 실행할 수 없습니다. –