2011-01-04 2 views
3

Мне было интересно, была ли компиляция каких-либо известных различий в принятой структуре синтаксиса SQL между запуском запроса непосредственно в SQL Management Studio и созданием SQL-запроса в виде строки в приложении .net и отправки его через SQLCommand и Connection? Я собирался спросить о конкретной проблеме, которую я имел с одним конкретным запросом, но, как оказалось, у меня возникает несколько проблем с несколькими запросами. Я в основном беру набор запросов, написанных кем-то другим, и внедряю их в .Net-части, которые я реализую, но я считаю, что мне нужно настроить большинство запросов (например, Table1.Column1 не работает, просто Column1 отлично работает)Различия в синтаксисе SQL между SQL Server 2005 и ADO.Net?

Мне было интересно, существуют ли проблемы, с которыми я сталкиваюсь, известные различия между этими двумя средами или проблема связана с проблемами структуры базы данных/схемы/запроса?

EDIT С Пример:

Следующие 4 запросов все работы в SQL Management Studio, но не прошел в SQL Connection в .net веб-части ... Будучи не в состоянии работать, я имею в виду веб-часть не будет загрузить на странице asp (это на самом деле страница SharePoint), и, как мне сообщили SharePoint, это вызывает проблему. Я не уверен в правильных журналах sharepoint, чтобы посмотреть на них ... (ОБРАТИТЕ ВНИМАНИЕ. Я знаю, что эти запросы не имеют смысла, например, бессмысленность предложения FROM, но они являются отладочными запросами, с которыми я играл с попытаться определить проблемы)

5-запрос отлично работает как в SQL Management Studio и в веб-части .Net, но это противоположная логика того, что я хотел ..

//----------------------------------------------- 

    SELECT DISTINCT 
      '2011' AS Yr, '01' AS PerNbr, 1 AS Amount 
      FROM Submissions AS s INNER JOIN 
      JurisdictionalData AS j ON re_KeyTbl = Keytbl AND s.jurisdiction <> REPLACE(j.JurisdictionTxt, 'Jurisdiction', '') 

//----------------------------------------------- 

SELECT DISTINCT 
     '2011' AS Yr, '01' AS PerNbr, 1 AS Amount 
     FROM Submissions AS s INNER JOIN 
     JurisdictionalData AS j ON j.re_KeyTbl = s.Keytbl AND s.jurisdiction NOT IN (REPLACE(j.JurisdictionTxt, 'Jurisdiction', '')) 

//----------------------------------------------- 

SELECT DISTINCT 
     '2011' AS Yr, '01' AS PerNbr, 1 AS Amount 
     FROM Submissions AS s INNER JOIN 
     JurisdictionalData AS j ON j.re_KeyTbl = s.Keytbl AND s.jurisdiction NOT IN (j.JurisdictionTxt) 

//----------------------------------------------- 

SELECT DISTINCT 
     '2011' AS Yr, '01' AS PerNbr, 1 AS Amount 
     FROM Submissions AS s INNER JOIN 
     JurisdictionalData AS j ON j.re_KeyTbl = s.Keytbl AND s.jurisdiction <> j.JurisdictionTxt 

//----------------------------------------------- 
SELECT DISTINCT 
     '2011' AS Yr, '01' AS PerNbr, 1 AS Amount 
     FROM Submissions AS s INNER JOIN 
     JurisdictionalData AS j ON j.re_KeyTbl = s.Keytbl AND s.jurisdiction = j.JurisdictionTxt 

C# код (довольно стандартный материал):

членов класса:

//sql db connection string 
private string _cnString = 
"Server=_server;" + 
"Database=_db;" + 
"User ID=_user;" + 
"Password=_password;" + 
"Trusted_Connection=False"; 

//sql query 
    private string query = "SELECT DISTINCT " + 
    "'2011' AS Yr, '01' AS PerNbr, 1 AS Amount " + 
    "Submissions AS s INNER JOIN " + 
    "JurisdictionalData AS j ON j.re_KeyTbl = s.Keytbl AND s.jurisdiction = j.JurisdictionTxt "; 

в моей функции CreateChildControls:

SqlConnection sqlConn = new SqlConnection(_cnString); 
//run SQL query and store results in a dataset 
     SqlCommand sqlCmd = new SqlCommand(query, sqlConn); 
     SqlDataAdapter adp = new SqlDataAdapter(sqlCmd); 
     DataSet ds = new DataSet(); 
     adp.Fill(ds); 
+1

Нет никакой разницы. Пожалуйста, разместите конкретный пример, который заставит вас поверить, что есть разница. –

+0

Пожалуйста, добавьте несколько примеров, я не нашел различий в том, что они принимают. –

+0

Как это не по теме? –

ответ

2

Очевидно, проблема заключается в том, что вы не знаете, как найти журналы SharePoint, которые помогут вам решить проблема. Итак, попробуйте устранить SharePoint.

Извлеките часть своей веб-части, которая выполняет ввод/вывод базы данных в отдельные классы. Вызовите эти классы из обычного приложения ASP.NET. Посмотрите, можете ли вы сделать так, как это происходит.

Если нет, попробуйте обернуть свой код ADO.NET в блок try/catch и в catch попытаться создать запись журнала событий. Для этого см. Пространство имен System.Diagnostics.

Наконец, возможно, вы должны спросить, где будут журналы ошибок. Может быть, информация уже есть. Может быть, вам следует развернуть тестовый SharePoint, над которым у вас больше контроля?

+0

Да, вы в значительной степени правы, аспект SharePoint - это недостающая часть при отладке моих проблем. Будут ли работать над вашими предложениями и повторной отправкой, если у меня есть какие-либо полезные прорывы/info – Alex

+0

@Alex: WSS 3.0/MOSS 2007? Я слышал, что 2010 год - лучший опыт отладки, поэтому вы должны использовать более старую версию. –

+0

yup, WSS 3.0/MOSS 2007 - моя среда – Alex

0

Нет, нет никакой разницы.

SQL Server будет анализировать и выполнять SQL-строки таким же образом.

Есть ли что-то конкретное, что вы имеете в виду?

0

Если вы говорите непосредственно с SqlCommand (а не с абстракцией, например, с адаптером данных), она должна быть идентичной - это просто TSQL, отправленный на сервер te. Единственными отличиями могут быть настройки SET в действии, возможно, учетная запись, которую вы используете, схема по умолчанию и т. Д.

Смежные вопросы