У меня есть сценарий OPENQUERY SQL:Как использовать OPENQUERY в C#
Select * from openquery([oak],'
SELECT LicenseKey, SUM(PaymentAmount)as Payments
FROM vw_ODBC_actv_Payments pt
WHERE MONTH(pt.EntryDate) = 2 and
YEAR(pt.EntryDate) = 2015
GROUP BY LicenseKey
')
Когда я запускаю это из SSMS я могу видеть, что она возвращает ожидаемые п строк.
Однако, когда я стрелять это с теми же свойствами подключения, чтобы получить данные в DataSet для приложения C# консоли:
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand pcmd= new SqlCommand();
DataSet ds= new DataSet();
OpenConnection();
pcmd.Connection = new SqlConnection("Data source=IP adress of the server;Initial Catalog=master; user ID=***; password=***");
cmd.CommandText = "Select * from openquery([oak],'" +
"SELECT LicenseKey, SUM(PaymentAmount)as Payments" +
"FROM vw_ODBC_actv_Payments pt " +
"WHERE MONTH(pt.EntryDate) = 2 and" +
"YEAR(pt.EntryDate) = 2015" +
"GROUP BY LicenseKey')";
try
{
da.SelectCommand = pcmd;
da.Fill(ds); //here comes the error
}
catch (Exception ex)
{
throw new Exception("DBUtils.ExecuteReader():" + ex.Message);
}
Я получаю сообщение об ошибке, как это:
Поставщик указывает, что у пользователя не было разрешения на выполнение . Теперь мне нужно что-то сделать с этим вопросом
Я просто узнаю об открытии. Может ли кто-нибудь руководить?
Вы не открываете соединение нигде от вышеуказанного кода. Также вы не объявили 'ds' – Izzy
@Izzy - это был код из моего проекта. Пользовательские функции предоставляют соединения и данные. Моя проблема возникает, когда я открываю соединение. – xameeramir