我的开发机器上只有SQL Server 2008(开发版)
我的托管公司只提供SQL Server 2005(我没有对此数据库的直接连接访问权限)
我只是想知道最好的方法是什么:
据我所知......
复制 - 不是选项,因为我无法连接到生产数据库.
恢复备份 - 不是一个选项,因为据我所见,您无法从2008年导出可恢复的数据库(即使在2005兼容模式下设置2008 DB),恢复生产也没有意义无论如何,在我的开发版本的顶部.
转储我的2008数据库中的所有脚本,从2008 - > 2005将我的开发还原到机器,然后从脚本重新创建数据库,然后使用备份和恢复将初始数据库投入生产,然后通过Web面板运行脚本那一点起
转储我的2008数据库中的所有脚本,并从生产中的脚本生成整个2005数据库.然后从那时起通过Web面板运行脚本
使用最后两个选项,我可能需要使用一些工具(我认为存在于Web上)编写所有数据插入的脚本
还有其他可能的解决方案,我没有考虑.
我的SQL查询有问题,需要时间从数据库中获取所有记录.任何身体帮助我.以下是数据库示例:
order(order_id, order_nm)
customer(customer_id, customer_nm)
orderDetail(orderDetail_id, order_id, orderDate, customer_id, Comment)
Run Code Online (Sandbox Code Playgroud)
我想获得最新的客户和订单详细信息.
这可能是解决方案:
我创建了一个GetLatestOrderByCustomer(CusID)函数来获取最新的客户信息.
CREATE FUNCTION [dbo].[GetLatestOrderByCustomer]
(
@cus_id int
)
RETURNS varchar(255)
AS
BEGIN
DECLARE @ResultVar varchar(255)
SELECT @ResultVar = tmp.comment
FROM
(
SELECT TOP 1 orderDate, comment
FROM orderDetail
WHERE orderDetail.customer_id = @cust_id
) tmp
-- Return the result of the function
RETURN @ResultVar
END
Run Code Online (Sandbox Code Playgroud)
下面是我的SQL查询
SELECT
customer.customer_id
, customer.customer_nm
, dbo.GetLatestOrderByCustomer(customer.customer_id)
FROM Customer
LEFT JOIN orderDetail
ON orderDetail.customer_id = customer.customer_id
Run Code Online (Sandbox Code Playgroud)
运行该功能需要时间.有人可以建议我任何解决方案,使其更好吗?
这是一个场景:我有一个表记录了user_id,module_id以及查看模块的日期/时间.
例如.
Table: Log
------------------------------
User_ID Module_ID Date
------------------------------
1 red 2001-01-01
1 green 2001-01-02
1 blue 2001-01-03
2 green 2001-01-04
2 blue 2001-01-05
1 red 2001-01-06
1 blue 2001-01-07
3 blue 2001-01-08
3 green 2001-01-09
3 red 2001-01-10
3 green 2001-01-11
4 white 2001-01-12
Run Code Online (Sandbox Code Playgroud)
我需要得到一个结果集,其中user_id为第1列,然后是每个模块的列.然后行数据是user_id以及用户查看每个模块的次数.
例如.
---------------------------------
User_ID red green blue white
---------------------------------
1 2 1 2 0
2 0 1 1 0
3 1 2 1 0
4 0 0 0 1
Run Code Online (Sandbox Code Playgroud)
我最初认为我可以用PIVOT做到这一点,但没有骰子; 数据库是在SQL Server 2005中运行的已转换的SQL Server 2000数据库.我无法更改兼容级别,因此数据库已关闭. …
我试图在我的C#Winforms应用程序中从SQL Server 2005调用参数化存储过程.我从TextBoxeslike添加参数(其中有88个):
cmd.Parameters.Add("@CustomerName", SqlDbType.VarChar, 100).Value = CustomerName.Text;
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
"System.InvalidCastException: Failed to convert parameter value
from a TextBox to a String. ---> System.InvalidCastException:
Object must implement IConvertible."
Run Code Online (Sandbox Code Playgroud)
抛出错误的行是我调用查询时:
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
我也尝试在TextBoxes上使用.ToString()方法,无论如何看起来毫无意义,并抛出相同的错误.我错误地传递了参数吗?
我想使用foreach容器遍历匹配诸如“ Filename_MMYYYY.xls”之类的文件夹。这很容易做到;但我似乎找不到从文件名解析MMYYYY并将其添加到变量(或某些变量)中的方法,该变量可用作我的DimDate表的查找字段。使用平面文件数据源似乎可行,但不能使用excel连接。我正在使用Visual Studio2005。请帮忙!
表中的总记录是10.
Select count(ID) from table1 where col1 = 1 (Result is 8)
Select count(ID) from table1 where col1 = 0 (Result is 2)
Run Code Online (Sandbox Code Playgroud)
所以它是一个相同的表,但计数是基于不同的条件.如何使用一个select语句获得两个结果(计数)?
此外,性能是一个大问题.
PS:我正在使用存储过程...
编辑:我想清除上面的查询只是一个大SP逻辑的一部分(至少对我来说).由于我得到了以下答案,它给出了另一种想法,以不同的方式实现它.我上面的问题现在有点改变了......请帮忙吗?它是一个具有真或假状态的col(bool类型).
我在表中有一个CustomerID列和一个EffectiveDate列.
我需要这两者的组合才是独一无二的.
但是,我已经在自动编号的整数列上有一个主键.
什么是实现目标的好方法?
谢谢
我有两个表,我想通过ID字段加入.我试图用这个"INNER JOIN".一切都会好,但有两个问题:
我认为其他sql-s有类似自然连接的东西,这可能(或不是?)是我的问题的答案.不幸的是,SQL Server(2005)中没有类似的连接.有人知道有什么好的替代品吗?
我有以下问题.
我有一些的DateTime属性的对象,并在数据库中的表,我储存的所有对象,在SQL Server中我要存储日期时间数据类型的一些列的日期时间属性,但在SQL Server日期时间的格式是不同的c#中的DateTime类,我得到一个sql异常,说"无法解析DateTime".我知道如何通过使格式YYYY-MM-DD解决这个但这是正确的和最佳的解决方案,这样做吗?
public void UpdateInvitation(string ownerId, string couponKey, string status, string invitedEmail, DateTime? sentDate, DateTime? redeemedDate)
{
using (var con = new SqlConnection(this.ConnectionString))
{
try
{
con.Open();
var command =
new SqlCommand(
"UPDATE INVITATIONS SET Status='@status', InvitedEmail='@invitedEmail', SentDate='@sentDate', RedeemDate='@redeemedDate' WHERE CouponKey='@CouponKey' AND OwnerId='@OwnerId'");
var ownerIdParam = new SqlParameter("@ownerId", ownerId);
var couponKeyParam = new SqlParameter("@couponKey", couponKey);
var statusParam = new SqlParameter("@status", status);
var invitedEmailParam = new SqlParameter("@invitedEmail", invitedEmail);
var sentDateParam = new SqlParameter("@sentDate", sentDate.Value) { SqlDbType = SqlDbType.DateTime }; …Run Code Online (Sandbox Code Playgroud) 我使用以下查询来获取有关SQL表的列的信息:
SELECT * from information_schema.columns
WHERE table_name = 'userpersonalinformation'
Run Code Online (Sandbox Code Playgroud)
但是我找不到关于每列创建日期的任何数据......有没有办法在表中获取列的创建日期?
sql-server-2005 ×10
sql ×8
sql-server ×4
c# ×2
database ×2
t-sql ×2
ado.net ×1
backup ×1
datetime ×1
parameters ×1
pivot ×1
restore ×1
select ×1
ssis ×1