При попытке выполнить запрос SQL через поставщик Ole db SQL Server (localdb) \ v11.0, я сталкиваюсь с этой ошибкой:

‘Многошаговая операция OLE DB вызвала ошибки. Проверьте каждое значение состояния OLE DB, если оно доступно. Работы не было.

Однако когда я выполняю оператор в SSMS (SQL Server Management Studio), он получает результаты без ошибок / предупреждений.

Ниже мое заявление SQL.

> SELECT DISTINCT Runs.Run, Demographics.Groups FROM Runs, Demographics
> WHERE Runs.Run = Demographics.Run AND Runs.Run >= 1 AND Runs.Run <= 4
> ORDER BY Runs.Run, Demographics.Groups

По сути, я просто хочу получить указанные результаты, которые соответствуют условиям в выражении, как в SSMS.

Результаты успешной попытки запроса выбора в SSMS.

Оператор копируется из окна Locals в Visual Studio в тот момент, когда он передается этой функции для выполнения:

HRESULT COLETableData::DoQuery2(const CString& strTable, COleSafeArray* const psaCells, COleSafeArray* const psaHeaders, COleSafeArray* const psaTypes)
{
HRESULT hr = S_OK;

try
{
if (m_bInit)
{
// Set db access requirements
CDBPropSet dbProps(DBPROPSET_ROWSET);
dbProps.AddProperty(DBPROP_IRowsetChange, true);
dbProps.AddProperty(DBPROP_IRowsetLocate, false);
//dbProps.AddProperty(DBPROP_BOOKMARKS, true);
dbProps.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_INSERT | DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE);

CCommand<CDynamicAccessor> oTable;
hr = oTable.Open(m_Session, strTable, &dbProps);

Строка SQL-запроса является strTable.
Последняя строка ‘hr’ — это HRESULT, который получает код ошибки.

РЕДАКТИРОВАТЬ:

Удаление DISTINCT из оператора дает те же результаты, на каком основании SQL больше не будет выполнять ту же операцию, что и с DISTINCT в нем?

1

Решение

Вы должны изменить его, чтобы использовать вместо этого соединения:

SELECT DISTINCT Runs.Run, Demographics.Groups
FROM Runs
INNER JOIN Demographics ON Runs.Run = Demographics.Run
WHERE Runs.Run >= 1 AND Runs.Run <= 4
ORDER BY Runs.Run, Demographics.Groups

Не уверен, что это решит вашу проблему, но вы должны делать это так, как вы это делали.

Это может быть что-то с вашим кодом, вызывающим SQL, вы можете опубликовать свой код, который вызывает это?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]