Проблемы
Ошибка во время выполнения «-2147217900 (80040e14)»: [Microsoft] [драйвер SQL Server ODBC] [SQL Server] в запросе используются операторы внешнего соединения, не относящиеся к ANSI («* =» или «= *»). Чтобы выполнить этот запрос без изменения, установите для свойства уровень совместимости текущей базы данных значение 80 или ниже, используя sp_dbcmptlevel хранимой процедуры. Настоятельно рекомендуется переписать запрос с использованием операторов внешнего соединения ANSI (левое ВНЕШНее соединение, ПРАВОе ВНЕШНее соединение). В будущих версиях SQL Server операторы соединения, не относящиеся к ANSI, не поддерживаются даже в режимах обратной совместимости, эта ошибка возникает в одном из следующих трех экземпляров.
-
FDM 6,0 и 7,0 — ошибка в ФИНАНСОВом масштабе в формате строки для базы данных SQL 2005.
-
FRL13, FDM 6,0 и 7,0 — ошибка при запуске мастера отчетов для базы данных SQL 2005.
-
Отчеты с эталонными кодами, TREF, TPROJ получать ошибки для SQL 2005 DB.
Статус
Этот SMR был исправлен в пакете обновления для R07670 и последующих пакетах обновления, а также на веб-сайте (www.FRxSoftware.com) для обеспечения доступности пакетов обновления для главной книги. Вы также можете зарегистрироваться для автоматического уведомления о службах на нашем веб-сайте.
Обходное решение
Чтобы обойти эту ошибку, выполните указанные ниже действия, чтобы установить уровень совместимости базы данных в 80:
-
В корпоративном диспетчере щелкните правой кнопкой мыши базу данных. Выберите пункт Свойства.
-
Откройте вкладку Параметры.
-
Измените уровень совместимости на 80.
Ссылки
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.
Symptoms
Run-time error ‘-2147217900 (80040e14)’:[Microsoft][ODBC SQL Server Driver][SQL Server]The query uses non-ANSI outer join operators («*=» or «=*»).
To run this query without modification, please set the compatibility level for current database to 80 or lower, using stored procedure sp_dbcmptlevel. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN).
In the future versions of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes
This error occurs in any one of the following three instances:
-
FDM 6.0 and 7.0 — Error in GL Zoom in row format against SQL 2005 database.
-
FRL13, FDM 6.0 and 7.0 — Error launching Report Wizard against a SQL 2005 DB.
-
Reports with Reference Codes, TREF, TPROJ receive error against SQL 2005 DB.
Status
This SMR has been fixed in R07670 Service Pack and subsequent Service Packs, please check or website (www.FRxSoftware.com) for availability of Service Packs for your General Ledger. You may also sign up for automatic notification of Services on our website .
Workaround
To work around the issue, do the following to set the Compatibility Level of the Database to 80:
-
In Enterprise Manager, right click the database. Select Properties.
-
Select the Options Tab.
-
Change the Compatibility Level to 80.
References
Need more help?
Want more options?
Explore subscription benefits, browse training courses, learn how to secure your device, and more.
Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.
- Remove From My Forums
Причина ошибки.
-
Вопрос
-
80040E14 (-2147217900)
Не удалось продолжить просмотр с NOLOCK вследствие перемещения данных.
В чем может быть причина данной ошибки? Мне на ум приходит только прямое описание. Т.е. данные были изменены во время выполнения запроса. Могут ли быть другие причины?
Ответы
-
Могут. Битая база, например. А зачем вы читаете с NOLOCK в конкурентной среде?
-
Помечено в качестве ответа
23 декабря 2013 г. 10:08
-
Помечено в качестве ответа
-
-
Изменено
Alexey KnyazevEditor
19 декабря 2013 г. 6:02 -
Помечено в качестве ответа
Иван Владимирович
23 декабря 2013 г. 10:07
-
Изменено
-
начните с проверки целостности БД! Как бы не оказалось, что проблема куда более серьёзная!
http://www.t-sql.ru
-
Помечено в качестве ответа
Иван Владимирович
23 декабря 2013 г. 10:08
-
Помечено в качестве ответа
-
Если проблеммы в версии и конфигурации нет, то меняйте код…
http://www.t-sql.ru
-
Помечено в качестве ответа
Иван Владимирович
23 декабря 2013 г. 10:07
-
Помечено в качестве ответа
Co-worker is on sabbatical and I am covering for him for SQL Reports and such. Need help looking at his code and figuring out why it is failing. This code is in Excel-VBA and pulling in from SQL Server Management Studio. As you can see, some of the code is commented out. Any help would be appreciated.
Function queryData(strSQL As String, ByRef objDB As Object)
'v1.0 - 2006.11.17 - Jaes W Overley (JO3945)
'v1.1 = 2013.08.26 - Jaes W Overley (JO3945)
'v1.2 - 2015.08.11 - Mark Waters
Dim objField As Object, objRS As Object
Dim lngCol As Long
Dim strConnect As String
Dim results As Variant
Dim emptyarray(0 To 2, 0 To 0) As String
emptyarray(0, 0) = ""
emptyarray(1, 0) = ""
emptyarray(2, 0) = ""
'Set objDB = New ADODB.Connection
Set objRS = New ADODB.Recordset
'used to have connect here - commented out so we only connect once when we run more than one query
'If Not CONNECTED(strConnect) Then Exit Function
'Open Database
'objDB.Open strConnect
objRS.Open strSQL, objDB
'Add Field Headers
'For Each objField In objRS.Fields
' lngCol = lngCol + 1
' With .Cells(1, lngCol)
' .Value = UCase(objField.Name)
' .Font.Bold = True
' .Font.Color = vbWhite
' .Interior.Color = vbBlue
' End With
'Next
If Not objRS.EOF Then
results = objRS.GetRows
Else
results = emptyarray
End If
objRS.Close
'objDB.Close
queryData = results
End Function
Here is the SQL code:
select
envPkgs.Client_Mnemonic
, envPkgs.Environment
, PkgInfo.OCD_Number
, envPkgs.Install_Date_Time
, PkgInfo.Name
, pkginfo.External_Solution_Name
, PkgInfo.Type_String
, CASE WHEN testedPkgs.sts ='Tested' THEN 'Tested'
WHEN awarePkgs.sts = 'Aware' THEN 'Aware'
Else 'Needs Review' END AS 'Status'
from MSA_Package_Install_Summary envPkgs with (nolock)
join OCD_Base_Data PkgInfo with (nolock)
on envPkgs.OCD_Number = PkgInfo.OCD_Number
left join ( VALUES ('IHC_UT', 86993, 'Tested'), ('IHC_UT', 72826, 'Tested'), ('IHC_UT', 83972, 'Tested'), ('IHC_UT', 87465, 'Tested'), ('BRMC_IA', 87345, 'Tested'), ('BRMC_IA', 86713, 'Tested'), ('BRMC_IA', 87374, 'Tested'), ('BRMC_IA', 84724, 'Tested'), ('IHC_UT', 87391, 'Tested')
, ('IHC_UT', 86133, 'Tested'), ('IHC_UT', 86132, 'Tested'), ('IHC_UT', 86131, 'Tested'), ('IHC_UT', 86128, 'Tested'), ('IHC_UT', 86126, 'Tested'), ('IHC_UT', 86125, 'Tested'), ('IHC_UT', 86124, 'Tested'), ('IHC_UT', 86123, 'Tested'), ('IHC_UT', 86122, 'Tested'), ('IHC_UT', 86121, 'Tested')
, ('IHC_UT', 84544, 'Tested'), ('RUTL_VT', 85684, 'Tested'), ('RUTL_VT', 84159, 'Tested'), ('RUTL_VT', 82963, 'Tested'), ('RUTL_VT', 86993, 'Tested'), ('RUTL_VT', 86805, 'Tested'), ('RUTL_VT', 86795, 'Tested'), ('RUTL_VT', 86794, 'Tested'), ('RUTL_VT', 86793, 'Tested'), ('RUTL_VT', 86792, 'Tested')
, ('RUTL_VT', 86804, 'Tested'), ('UNIV_MO', 86972, 'Tested'), ('UNIV_MO', 86952, 'Tested'), ('UNIV_MO', 83038, 'Tested'), ('UNIV_MO', 82950, 'Tested'), ('UNIV_MO', 87691, 'Tested'), ('UNIV_MO', 66422, 'Tested'), ('YAVA_AZ', 84958, 'Tested'), ('YAVA_AZ', 86204, 'Tested'), ('YAVA_AZ', 86993, 'Tested')
, ('YAVA_AZ', 86068, 'Tested'), ('AGNE_WI', 835321-10434458131, 'Tested'), ('AGNE_WI', 84416, 'Tested'), ('AGNE_WI', 86305, 'Tested'), ('AGNE_WI', 85772, 'Tested'), ('AGNE_WI', 83647, 'Tested'), ('AGNE_WI', 86949, 'Tested'), ('AGNE_WI', 84459, 'Tested'), ('AGNE_WI', 86095, 'Tested'), ('AGNE_WI', 86052, 'Tested')
, ('AGNE_WI', 84920, 'Tested')) AS testedPkgs (mnem, pkg, sts)
on testedPkgs.mnem = envPkgs.Client_Mnemonic and testedPkgs.pkg = PkgInfo.OCD_Number
left join ( VALUES ('IHC_UT', 86993, 'Aware'), ('IHC_UT', 72826, 'Aware'), ('IHC_UT', 83972, 'Aware')) AS awarePkgs (mnem, pkg, sts)
on awarePkgs.mnem = envPkgs.Client_Mnemonic and awarePkgs.pkg = PkgInfo.OCD_Number
left join MSA_Package_Install_Summary dupe with (nolock)
on dupe.Client_Mnemonic = envPkgs.Client_Mnemonic
and dupe.OCD_Number = envPkgs.OCD_Number
and dupe.Install_Date_Time < envPkgs.Install_Date_Time
where
envPkgs.Client_Mnemonic IN ('AGNE_WI', 'AH_MO', 'AHMO_CT', 'AHMO_ET', 'ARMC_GA', 'BH_AL', 'BRMC_IA', 'CARE_RH', 'CERN_CLIN'
, 'CERN_RWX', 'CHAR_NC', 'CHI_CO', 'CHI_CO', 'CHW_CA', 'CHWB_CA', 'CRVN_NC', 'LEID_VA', 'EAST_AL', 'EJEF_LA'
, 'EXCL_PA', 'GHS_IA', 'GLEN_NY', 'IHC_UT', 'JACK_FL', 'LAC_CA', 'LMH_KS', 'MCGH_GA', 'NAPL_FL', 'NKCMH_MO'
, 'NMHS_NE', 'PHA_SC', 'QEMR_AU', 'RUTL_VT', 'SGEN_OH', 'THCH2_TX', 'THCH5_TX', 'THCH6_TX', 'TRUM_MO', 'UCQS_AU'
, 'UMC_TX', 'UNIV_MO', 'YAVA_AZ')
and envPkgs.Install_Date_Time >= getDate() - 7
and dupe.Client_Mnemonic IS NULL
Order by
envPkgs.Install_Date_Time desc
I am building a setup project using WIX 3.10. I need to create a SQL Server database from the installer, for that I am using a script generated by Visual Studio Database Project.
My WIX code is:
<Binary Id="SQLCreateScript" SuppressModularization="no" SourceFile="$(var.TestInstallDBProject.TargetDir)$(var.TestInstallDBProject.ProjectName)_Create.sql" />
AND
<Component Guid="3B413DBB-603B-42BA-80A6-BA8ED5216ACE" Id="FornetDB" Directory="DirIIS" KeyPath="yes">
<sql:SqlScript BinaryKey="SQLCreateScript" ExecuteOnInstall="yes" SqlDb="MasterDB" Id="CreateScript" />
</Component>
<sql:SqlDatabase Database="Master"
Server="TUSHAR"
Instance="SQLSERVER2008R2"
Id="MasterDB"
></sql:SqlDatabase>
It throws this error:
I opened file generated in Notepad++ but can’t see characters. Error message has
marc_s
728k174 gold badges1327 silver badges1455 bronze badges
asked Jun 29, 2016 at 13:09
2
To solve my problem I use custom MSbuild Task, that remove BOM information from text (SQL) file. Here Is Code:
using System.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace CustomBuildTasks
{
public class RemoveBOMInfo : Task
{
private ITaskItem[] _FilesToRemoveBOMInfo;
[Required]
public ITaskItem[] FilesToRemoveBOMInfo { get { return _FilesToRemoveBOMInfo; } set { _FilesToRemoveBOMInfo = value; } }
public override bool Execute()
{
if (FilesToRemoveBOMInfo == null || FilesToRemoveBOMInfo.Count() < 1)
{
Log.LogError("FilesToRemoveBOMInfo can't be null or Empty.");
return false;
}
//var Files = FilesToRemoveBOMInfo.Split(';');
foreach (var File in FilesToRemoveBOMInfo)
{
var str = File.GetMetadata("Identity");
if (!System.IO.File.Exists(str))
{
Log.LogError("File {0} not found.", str);
continue;
}
using (var file = System.IO.File.Open(str, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
int fByte = file.ReadByte();
if (fByte != 239)
continue;
fByte = file.ReadByte();
if (fByte != 187)
continue;
fByte = file.ReadByte();
if (fByte != 191)
continue;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
for (int i = 0; i > -1; )
{
i = file.ReadByte();
if (i > 0)
{
ms.WriteByte((byte)i);
}
}
file.Close();
System.IO.File.Delete(str);
using (var oFile = System.IO.File.Create(str))
{
ms.WriteTo(oFile);
oFile.Close();
}
}
}
}
return true;
}
}
}
and used in MSBuild script as:
<Target Name="AfterResolveReferences" >
<RemoveBOMInfo FilesToRemoveBOMInfo="%(_ResolvedProjectReferencePaths.RelativeDir)%(_ResolvedProjectReferencePaths.Name)_Create.sql" Condition="'%(_ResolvedProjectReferencePaths.IsSQLProj)' == 'True'" ></RemoveBOMInfo>
</Target>
answered Jul 3, 2016 at 9:31
1