Symfony: построить схему доктрины из sql azure db

Моя строка DSN выглядит так:

  dsn:      odbc:DRIVER={SQL Server};Server=myserver.database.windows.net;Database=mydb;
  username: myusername@myserver
  password: mypwd

Когда я запускаю задачу symfony:

symfony doctrine:build-schema

Кажется, это успешное соединение, но оно прерывается со следующей ошибкой:

SQLSTATE[42000]: Syntax error or access violation: 2812 
[Microsoft][SQL Server Native Client 10.0][SQL Server]Could not find stored procedure
'sp_primary_keys_rowset'. (SQLExecute[2812] at ext\pdo_odbc\odbc_stmt.c:254). 
Failing Query: "EXEC sp_primary_keys_rowset @table_name = Appointment"

Кто-нибудь знает, в чем здесь проблема? Я не смог найти никакой полезной информации о кодах ошибок.

Я использую symfony 1.4.10, PHP 5.3, SQL Azure.


person ownking    schedule 24.03.2011    source источник


Ответы (2)


Существует ли хранимая процедура sp_primary_keys_rowset в вашей базе данных?

person terrid25    schedule 24.03.2011
comment
Нет, не могу найти. Я нашел страницу MSDN о системных хранимых процедурах API msdn.microsoft.com/en- нас/библиотека/ms187961.aspx - person ownking; 24.03.2011
comment
Когда я просматриваю обычную базу данных SQL Server, у меня есть эти необходимые системные хранимые процедуры, но их нет в базе данных SQL Azure. - person ownking; 24.03.2011

Я нашел решение:

В symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Mssql.php listTableColumns($table) мне пришлось изменить

$sql = 'EXEC sp_primary_keys_rowset @table_name = ' . $this->conn->quoteIdentifier($table, true);

to

$sql = 'EXEC sp_pkeys @table_name = ' . $this->conn->quoteIdentifier($table, true);
person ownking    schedule 25.03.2011