@@ -571,12 +571,22 @@ def column_definitions(table_name)
571571 end
572572
573573 def column_definitions_sql ( database , identifier )
574- object_name = prepared_statements ? "@0" : quote ( identifier . object )
575- schema_name = if identifier . schema . blank?
576- "schema_name()"
577- else
578- prepared_statements ? "@1" : quote ( identifier . schema )
579- end
574+ schema_name = "schema_name()"
575+
576+ if prepared_statements
577+ object_name = "@0"
578+ schema_name = "@1" if identifier . schema . present?
579+ else
580+ object_name = quote ( identifier . object )
581+ schema_name = quote ( identifier . schema ) if identifier . schema . present?
582+ end
583+
584+ object_id_arg = identifier . schema . present? ? "CONCAT(#{ schema_name } ,'.',#{ object_name } )" : object_name
585+
586+ if identifier . temporary_table?
587+ database = "TEMPDB"
588+ object_id_arg = "CONCAT('#{ database } ','..',#{ object_name } )"
589+ end
580590
581591 %{
582592 SELECT
@@ -631,7 +641,7 @@ def column_definitions_sql(database, identifier)
631641 AND k.unique_index_id = ic.index_id
632642 AND c.column_id = ic.column_id
633643 WHERE
634- o.name = #{ object_name }
644+ o.Object_ID = Object_ID( #{ object_id_arg } )
635645 AND s.name = #{ schema_name }
636646 ORDER BY
637647 c.column_id
@@ -653,7 +663,7 @@ def remove_check_constraints(table_name, column_name)
653663 end
654664
655665 def remove_default_constraint ( table_name , column_name )
656- # If their are foreign keys in this table, we could still get back a 2D array, so flatten just in case.
666+ # If there are foreign keys in this table, we could still get back a 2D array, so flatten just in case.
657667 execute_procedure ( :sp_helpconstraint , table_name , "nomsg" ) . flatten . select do |row |
658668 row [ "constraint_type" ] == "DEFAULT on column #{ column_name } "
659669 end . each do |row |
0 commit comments