I'm upgrading to 64 bits a Windows application that manages medical and research equipment and I'm soliciting some high-level just-get-started assistance...
My stumbling block is .NET references to SQL Server DLLs, in particular, two "mysteries" (described below). I've posted a similar query on two Microsoft forums but have not heard anything. Come on SQL Server Wizards! I need your help!
Details:
- Target Environments are 64 bit Windows 7 and later systems. While 64 bit OS is a requisite, there's not a snowball's chance of any upgrades to Windows 10. "Windows 7 shall remain Windows 7, Windows 8.1 shall remain" ... you get the idea.
- MSVS 2010 (ultimate) C# ...may not use 2012, 2013, 2015 ... similar constraints to those for the OS...
- Must be x64 only build ...no Win32, x86, AnyCPU or Mixed Platforms ... well, not quite true, but, for this question, go with the x64-only restriction...
Just to keep things simple (not), the application is a SQL Server client in a replication constellation. That means that the client may have a publish/subscribe relationship with one or more, remote SQL Servers. The original application (32 bit) worked with SQL Server 2008R2. The 64 bit application is to work with 64 bit SQL Server 2014. SQL Server 2016 is not an option as it does not install under Windows 7.
I have a 64 bit Windows 7 development system which has been cleansed of any SQL Server code and then has had SQL Server 2014 Enterprise installed. Yes, this clobbers MSVS 2010, which requires SQL Server Compact 3.5 for IntelliSense. For this question, please disregard that annoyance.
First Mystery:
I did a census of C# usings:
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Replication;
...and the original set of (SQL Server 2008R2) references:
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Management.Sdk.Sfc
Microsoft.SqlServer.Replication
Microsoft.SqlServer.Replication.BusinessLogicSupport
Microsoft.SqlServer.Rmo
Microsoft.SqlServer.Smo
Microsoft.SqlServer.SmoExtended
Microsoft.SqlServer.SqlEnum
I noticed that some of the references target DLLs in Windows' GAC; for example,
%WinDir%\assembly\GAC_MSIL\Microsoft.SqlServer.Replication.BusinessLogicSupport\-someGUID-.dll
I think I understand the targeting of the GAC: since SQL Server 2014 will be a pre-installation requirement, rather than providing the DLLs in some form of redistribution element (as would be the case with many applications), they are expected to be resident because of the presence of a running, SQL Server instance.
However, some of the references target DLLs in the SQL Server SDKs; for example:
%ProgramFiles(x86)%\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.Rmo.dll
(this is an x86 DLL ... not good) ...and there is unlikely to be any such SDK on the deployment machines.
...and some target local copies in the build tree.
This I do not understand. I hope I can just reference GAC DLLs, retargeting any references to the SDK (as mentioned, not likely to be present on the target machines) and avoid entirely source tree copies of DLLs. Can anybody explain why the varied sources? Use small words suitable for my limited intellect.
Second Mystery:
Even after installing SQL Server 2014 Enterprise and its related Server Replication Management Pack, I cannot find x64 counterparts for some of the 32 bit DLLs. Am I missing some additional pack? Maybe some of these references were applied during earlier times just "for luck" (no real correspondence to either Management.Common and/or Replication), are not even needed and can be ignored?
Thanks!